広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

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に変換してから渡さないと文字化けします)、これで問題なく添付ファイルが送れることになります。
コメント   この記事についてブログを書く
« 常時接続の幸せ・・・ | トップ | 3年ぶり »
最新の画像もっと見る

コメントを投稿

PHP+DB」カテゴリの最新記事