【php】mail関数の改行コード注意点
PHPのmail関数、引数に渡すデータの改行コードに注意。
ヘッダが正しくないメールが生成されて、正常に読めないメールが送られたりする。
本文
mail()関数に渡すときは、本文はLFで改行するようにとマニュアルに書いてある。
自力でSMTPに直接渡すときなどはCRLFなのだけど(RFC2822参照)。
ヘッダー
MTAにqmailを使用しているときは、subject(件名)の改行にはLFを使うこと。
つまり、
$subject = mb_encode_mimeheader('長い件名。長い件名。長い件名。長い件名。長い件名。', 'JIS', 'B', "\n");
subjectの改行は、長い件名のときに発生(RFC 2047)。件名が短いときは特に問題に気づかないと思う。こちらもインターネットメールの世界では改行はCRLFが原則。
まとめ
mail()関数に渡すなら、
・ 本文はLF。
・ subjectはMTAによってまちまち。
・ subject以外のヘッダーはCRLFで渡す。
・ (改行とは別の問題だけど)mb_encode_mimeheaderに渡す文字列の文字コードとmb_internal_encodingは一致させておいた方がよいらしい。偶然phpの設定がよい具合だと、あえて設定しなくても大丈夫かもしれない。
IT Harmony 2011年6月11日 10:15
[PHP]長い日本語SubjectのメールをPHPで送信する…
メールをプログラムから送信する際のポイント。特に以下の条件下の場合の対処方法。 ……