2009年02月10日

WARNING: bad headers - Improper use of control character (char 0D hex):

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");


posted by はるこち at 16:24| Comment(0) | TrackBack(0) | 開発関係 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。