都道府県穴埋めゲーム

こんにちは。質問をさせてください。
今、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(黒色)"で受信しますでしょうか?
スクリプトの抜粋でわかりにくいと思いますが、宜しくお願い致します。

A 回答 (1件)

遅いかな?.



 まず最初にこれは 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

 で良いのではないでしょうか?.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報