mb_send_mailで添付メール

2006年12月28日 | PHP+DB
たまには開発日記らしいことも書かないと「タイトルに偽りあり!」って言われそうなので、書いておきますかぁ。プログラムやらない人にはちんぷんかんぷんでしょうから、どうかなとも思うのですが・・・。

先日、PHPのmb_send_mailで添付メールを送るスクリプトを作ろうとしたときのこと。具体的にどうするかはググっていただければいくつか出てくると思うので省略しますが、mb_send_mailでは無理と書いている方もいらっしゃいました。これは、ほぼイエスですがノーでもあります。結論的には、受け手の環境によるということです。

問題はヘッダです。mb_send_mailは、関数自身が作成するヘッダの後にこちらが付けたいヘッダを付け加えます。ファイルを添付するには、

Content-Type: multipart/mixed;・・・・

というヘッダにする必要があるのですが、mb_send_mailは通常のメールと同様

Content-Type: text/plain;・・・・

を入れてしまうんですよね。つまり、2つのContent-Typeヘッダが

Content-Type: text/plain;・・・・
Content-Type: multipart/mixed;・・・・

の順に送られることになります。これを(おそらく最初のは無視して)multipart/mixedと解釈してくれるメールソフトなら添付ファイルとして認識してくれます。MacOS XのMailとか私が以前使っていたMusashiというメールソフトはOKでした。でも、WinのOutlookはNGです。Winで出来ないものを世間では出来るとは言わないので(笑)、そういう意味ではmb_send_mailで添付ファイルは無理ということになりますね。

で、結局どうするかといいますと、mb_send_mailではなくmailという関数を使います。mb_send_mailが勝手にやってくれる処理を自分で行う必要がありますが(必要なヘッダは自分で付けないとなりませんし、本文をJISに変換してから渡さないと文字化けします)、これで問題なく添付ファイルが送れることになります。

常時接続の幸せ・・・

2006年12月24日 | Weblog
ADSLモデムが壊れましたっ!
水曜日(20日)あたりからおかしかったのよね。PPPランプ点灯、全ランプ点灯を交互に繰り返してました。でも、その日はつないだり外したりしてうちに正常に戻ったので、まぁいいかと思ってました。
次の日も同じ症状が出て、今度は何をやっても繋がらず・・・プロバイダに連絡して指示通りモデムの初期化を試みるも変化なし。モデムの故障ということで交換ということに。
でも、代わりのものが来るまでに最短3日だからその間ネットをするには・・・そう、ダイヤルアップしかないわけですなぁ・・・ははは。

で、本日、無事代わりのモデムが届いて、常時接続のありがたみをかみしめている最中というわけです。つらい三日間でありました。
しかし、こういうことがあると、予備の環境を用意しておいた方がいいかなぁって思いますね。仕事で使うんだし。うちは回線は2回線あるのでそれも可能なんですけどね。ADSL12Mで2,000円とかあるから、契約しとこうかなぁ・・・でも、こういうのって用心して準備しておくと何も起こらないもんなんですよねぇ。そう考えると無駄なような気も・・・まぁ、保険ってそもそもそういうものですけどね。

ぞんちアップ4.1

2006年12月20日 | ぞんちアップ
暖房復活!今日もこの時間はー10℃くらいらしい。暖房の効いた部屋だと、ふ~んそうなの?って感じです。幸せっ!

インテルMacでちゃんと動いてます&開発できてますって意味で、ぞんちアップいじってみました(ダウンロード)。
パーミッションの現在値を数値で表示するようにしました。設定変更に応じて数値の表示も変わるので試してみてください。数値の意味がわかる人には不要かも知れませんが、まぁ必要な人もいるかなと。



しかし、いつからOKボタンに白枠が出るようになってたんだろ・・・う~ん、そのうちなんとかしますか。そのうちね・・・。

インテルへの道4の2

2006年12月19日 | Weblog
Parallelsをインストールしたときのこと。XPをインストールしようとディスクを入れたら固まってしまい、強制リスタート。で、その時点でインストール先のフォルダ(/Users/ユーザー名/Library/Parallels/winxp/)はすでに出来ていたみたいで、やり直したら、上書きされずに「winxp.1」というフォルダを作ってインストールされた模様・・・実用上は問題ないけどさ・・・なんかイヤじゃない、用もなく「.1」なんて付いてるの・・・・。

で、「.1」を外してみました。XPは終了させてからの方が無難かも。まずはフォルダ名を「winxp.1」から「winxp」へ。その中にある、「winxp.1.hdd」を「winxp.hdd」に、「winxp.1.pvs」を「winxp.pvs」に。リネームはこれだけ。

Parallelsを立ち上げるが、認識せず。OSの新規インストールをしますか?と訊いてきた。どうやら、フォルダを勝手にたどって読みに行くのではなく、設定ファイルにパスが記録されている模様。

Property Page ViewのOpenでwinxp.pvsを選択。するとファイルが読み込まれた。Resourcesを見ると、FloppyとHard Disk 1のパスが「.1」の時のものなので、Edit画面を呼び出して変更。

XP起動・・・・無事成功です!

インテルへの道4

2006年12月17日 | Weblog
このくそ寒いのに暖房壊れたよっ!明日、明後日は真冬日・・・どうしようか・・・って、どうしようもないのだが。

さて、インテルMacに移行した一番の理由というのは、実はWindowsがサクサク動くからです。Windowsは、今ではブラウザの表示確認とか、Winユーザー向けのファイルを作るくらいしか使わないんだけど、今まではVitualPCでやってたわけですな。これがもう、くそ重いの何のって・・・フォルダ開くだけで何秒待たせるのやら。これがサクサク出来るだけで非常に気持ちがいいはず!
もちろん、Winマシンも持ってはいるんですけどね。作業はもっぱらMacでやるので、Macで作ったファイルをWinに持って行くのも楽だし、いちいち別のマシン立ち上げるのも手間なので、くそ重くてもVitualPCを使うわけです。

そんな使い方の私の心をくすぐるのはもちろん、Parallels Desktop for Macですよ。これさえあれば、VitualPCと同等の環境でサクサク動くWindowsが手にはいるというわけです。もうず~~っと前にParallelsだけは購入していたんですけどね。インテルMacもないのに(笑・・・正式版が出る前に安く売ってたからね)。

というわけで、Mac環境が整ったところでParallels入れてみました。WinはXPのHome。メモリとセットで買ったDSP版ね。もうね・・・期待通りのサクサク感ですわ。これだけ動けばもう文句ないっす。

はぁ・・・VirtualPCとも長いつきあいでしたが、これでもうおさらばですね。思い起こせば、VirtualPC3にWin98&VisualC++入れてWindowsのソフト作っていたときもあったなぁ・・・コンパイルにえっらい時間かかったっけ・・・まぁ、MacもWinもサクサクなんて、いい時代になったってことでしょうかね。

インテルへの道3の2

2006年12月16日 | PHP+DB
最近、投稿直後に一斉に付くトラックバックがウザイんですけどっ!もちろん、何の関係もないもの(スパム)ばっかりね。

インテルへの道4のつもりだったけど、3の続き・・・PHP&DBは、その後も特に問題なく順調に動いとります。ただ、htmlとかphpのファイルを置くディレクトリは、デフォルトでは、/Applications/MAMP/htdocsになってるけど、これはMAMPフォルダの外に変えた方がいいね。最新版にアップデートしようとMAMPフォルダごとうっかり上書きしてしまったら、大事なデータが消えてしまいますので・・・青ざめる前に変えておきましょう。

インテルへの道3

2006年12月15日 | PHP+DB
まずは、データベースのデータを移動。phpMyAdminで書き出してインテルMacのMySQLにインポート。読み込みファイルの文字セットにEUCがないので、utf8に変換してから読み込ませるとすんなり行ったかな。
続いて移したデータを使うスクリプトを起動してみる・・・噂通り文字化け。ページそのものが化けてるんじゃなくて差し込まれたデータのところだけが「???」と化けてます。

まぁ、ここからあれこれ格闘したわけですが、結論から言いますと、データベースに接続した後、set names ujisというクエリーを実行させるならそれだけでOKのようです。

$con = mysql_connect($hostname, $user_id, $password);
mysql_select_db($dbname);

$sql = "set names ujis";
$rs = mysql_query($sql);

ってな感じ?

結論はそうであっても、これを解決策とするならすべてのスクリプトに手を入れなければならないわけでして・・・そんなことはできる限りしたくないわけです。

で、これをサーバの方で必ずやってくれるような設定があるとのこと。それが、my.cnfの[mysqld]のところに

init-connect='SET NAMES ujis'

と書くというやつです。ちなみに、my.cnfなんてファイルはいくら探しても見つかりません。/library/share/mysqlにmy-small.cnfとかmy-medium.cnfとかmy-large.cnfとかありますんで、自分の環境にあったものを選んでmy.cnfとリネームした後、/db/mysqlに置けばいいようです。MAMPなら書き換えも移動も面倒なことがないんで嬉しいよね。

さて、my.cnfを置いてみる・・・変化なし。またまた調査の旅へ・・・すると、super権限のあるユーザーの場合はinit-connectが効かないんで、mysqldの起動オプションで指定しないとダメなんて記述を見つける。/bin/startMysql.shの起動オプションに

--init-connect='SET NAMES ujis'

を足してみる・・・これでも変わらず。

人がうまくいったというページの通りやってうまく行かないと凹むよね・・・いろいろ悩んだあげくsuperユーザーであること自体がいかんのかいなと思い、ほかのユーザーを作ってそのユーザーで接続してみる・・・出来た!文字化けしないよ~!

結局必要だったのは、my.cnfにinit-connect='SET NAMES ujis'を書き入れて、アクセス用のユーザーを作っただけ。これだけで今のところは問題ないように見えます。default-character-setの設定とか、skip-character-set-client-handshakeがどうとかいう話もあったけど、今のところなくても問題ないようです。まぁあとは、問題があればその時また考えることにしよう。その方が、今訳もわからず設定しておくより、どの設定が何に対処したものかがより実感を持ってわかるから。

と言うわけで、PHPおよびMySQLの移行はひとまず完了ということになりました。さて、次回は・・・

インテルへの道2

2006年12月13日 | PHP+DB
MySQLのバージョンをどうしようかといろいろ調べてあれこれ悩む・・・5.0にするのは結構チャレンジングなんて書いてる人もいるし(笑)・・・。えっ?ソースから入れれば好きなバージョン入れられるって?そんなこと喜んでやるくらいならMacユーザーなんて長年やってません(笑)!

でまぁ、5.0にするなら、いっそのこと「MAMP」にしちゃった方がよさそうな感じ。MAMPっていうのは、ApacheとMySQLとPHPがセットになって簡単に利用できるようにしたパッケージで、何がいいって

1,専用のポートで動かすのが標準になってるから、OS X標準のApacheとぶつかることなく動かせる!
 これがもう決定的です。標準の環境でトラブってしまえば面倒なことになるかも知れないので(だからこそ、入れる前にこうして慎重に悩んでるわけですが)、全く別というのは気軽にお試しできるという点でも非常に嬉しい。

2,インストールはアプリケーションフォルダにMAMPを入れるだけ。
 入れるのがこれだけってことは、アンインストールもMAMPを削除するだけ、アップデートもフォルダを入れ替えるだけってことで、これまた試してダメなら他を考えようかって軽~い気持ちで試せます。インストーラでどこに何入れたかわかんないものだと、ホントに元の状態に戻ってるもんだか不安になるからね。

3,PHPは4か5選んで動かせる
 なかなか気が利くじゃないの~!

というわけで、入れてみました。PHP5はあっさり動きました。で、PHP4に切り替えて・・・と思ったら、切り替えできないじゃないの・・・何これ?バグ?

ひとまずPHPは5で行くとして、あとはMySQLの文字化けとの戦いだな。まぁ覚悟はしてたけど。つづく・・・。

インテルへの道

2006年12月10日 | PHP+DB
三度目の正直・・・三台目のiMacがやってきました。今度はソフマップ(.com)で購入。特に問題ない模様(ほっ)。

で、週末を利用して今環境構築中。もちろん、仕事に関するところからね。今のマシンから自動移行という手もあるけど、PPC to インテルだし、まめにアップデートしたりしてないので古い環境が引き継がれたりしてもイヤなので、今回は手作業で構築中。
まぁ、どっちみち、CGIだのPHPだのデータベースだの仕事に関する部分は自動で移してくれないのは経験済みなので、その点ではどちらでも変わりません。

CGIの設定は何度とかなくやってるので、すんなり終了。続いて、PHPとMySQLを入れるところでどれを入れようかと悩み中。今まで入れていたのは、PHP4とMySQL4.0なんだけど、バイナリパッケージだとインテルマック用には最近のものしかないのよね。
PHPは5しかないようなので、悩むこともないか。MySQLは4.1、5.0,5.1だな。移行にに大きな溝(文字化け問題とかね)があったのは4.0 to 4.1のはずなので、4.1にするくらいならいっそ5にしてしまっても変わりないんでしょうか・・・う~ん、もうちょっと考えよう。仕事もしないとならないし。

直りましたね

2006年12月03日 | Weblog
ブログの表示がおかしかったようですが、直りましたね。Macのieだけかと思ったら、Winでもおかしかったんですね。
まぁ、テンプレート替えただけですけど・・・パグ付いてるしいいか?でも、うちの子じゃないからなぁ・・・よし、うちの子も載せちゃう!