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件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください