CentOS5.2のサーバで稼働しているspamassassin 3.2.4で処理したメールに「WARNING: bad headers – Improper use of control character (char 0D hex):」というメッセージが含まれるようになってしまいました。
これはヘッダ情報の中に \r があると表示されるエラーのようなんですが、PHPプログラムで作成しているヘッダには \r は使われていませんでした。
このメッセージの2行目を見ると「Subject: …Wokcjx1JDFJVSQxJF4kNyQ/?=\r\n =?ISO-2022-JP[…]」となっていて、どうやらMIMEエンコードされて2行に分かれるときに \r\n がつけられてしまうようです。
そこで、いったんヘッダを作成した後、\r\n を \n に置換するコードを付けたところ、うまくいきました。
$encoded_subject = mb_encode_mimeheader( mb_convert_encoding($subject, "JIS", "auto")); $mail_header = "From: $from_address\n" . "To: $to_address\n" . "Subject: $encoded_subject\n" . "MIME-Version: 1.0\n" . "Content-Type: text/plain; charset=\"iso-2022-jp\"\n" . "Content-Transfer-Encoding: 7bit\n"; $mail_header = str_replace("\r\n", "\n", $mail_header); $mail_header_and_content = $mail_header . "\n" . mb_convert_encoding($honbun, "JIS", "auto");
0件のコメント