- 締切済み
MIMEヘッダ
こんにちは。質問をさせてください。 今、PHPのsendmail関数を使用してHTMLメール・テキストメールを送信しようと考えています。 ------------------------------------------------ ### メールの送信 open MAIL, "|/usr/sbin/sendmail -f "****@aaa.co.jp" "****@bbb.co.jp""; ### 全体のヘッダ print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-Type: Multipart/Mixed; boundary=\"--=kuguri\"\n"; print MAIL "Content-Transfer-Encoding:Base64\n"; print MAIL "From: $from\n"; print MAIL "To: $to\n"; print MAIL "Subject: $subject\n"; ### テキストメール本文のパート print MAIL "--=kugiri\n"; print MAIL "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; print MAIL "\n"; print MAIL "HELLO\n"; ### HTMLメール本文のパート print MAIL "--=kugiri\n"; print MAIL "Content-Type: text/html;\n"; print MAIL "\n"; print MAIL "<html><body>\n"; print MAIL "<font color="red">HELLO</font>\n"; print MAIL "</body></html>\n"; ### マルチパートのおわり。 print MAIL "--"\kugiri"\" . "--\n"; close MAIL; 上記のような記述の場合、受信側のメーラが HTML設定の時は、"HELLO(赤色)" TEXT設定の時は、"HELLO(黒色)"で受信しますでしょうか? スクリプトの抜粋でわかりにくいと思いますが、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- stanaka
- ベストアンサー率44% (13/29)
遅いかな?. まず最初にこれは Perl ではないのか?.それから PHP に sendmail関数というのはなく,あるのは mail関数と mb_send_mail関数. さて,いくつか目に付いたところですが,同じ内容のテキストとHTML(その他)の本文をマルチパートで送出し,クライアント側の対応しているほうを表示する場合は,MIMEタイプは multipart/alternative だと思います. 上記のメールだと,正確にはテキスト本文のメールにHTMLファイルが添付されている形になるのではないかと. それから,境界文字列ですが, Content-Type: で指定する boundary 文字列の先頭にハイフン2文字を付け足したものが使用されるようです.上の例だと, boundary="--=kuguri" となっておりますので実際の境界文字列は ----=kuguri とすべきであると思われます. 次に, Content-Transfer-Encoding: Base64 とありますが,これはなぜ指定するのですか?.どこにもBase64エンコーディングは使われていませんし,そもそも multipart のメールに於いて CTE ヘッダは各パートで指定するべき(?自信なし)なので,テキストのパートでは, Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit とし,HTMLのパートでは, Content-Type: text/html; charset=iso-2022-jp Content-Transfer-Encoding: 7bit で良いのではないでしょうか?.