mb_encode_mimeheader($subject, "ISO-2022-JP");
この時、76文字を超える場合、メールヘッダの制限に準じて改行コード(CRLF)が自動的に挿入されます。
Subject: =?ISO-2022-JP?B?GyRCIVoheyFfJUklQyVIJTMlYCNXI2UjYiU1ITwlUyU5IVslZiE8GyhC?=\r\n =?ISO-2022-JP?B?GyRCJTYhPEVQTz80ME47JE4kNDBGRmIbKEI=?=
メールヘッダの仕様としてはこれで正解らしく、SMTP サーバーを使って送信した場合は正常に送信できました。
しかし、これを qmail を使って送信した場合、以下のように改行コードを挿入した部分以降のメールヘッダがメール本文の先頭に表示されるという珍現象が発生しました。(これに伴ってメールの件名も途中で切れていました)
=?ISO-2022-JP?B?GyRCJTYhPEVQTz80ME47JE4kNDBGRmIbKEI=?= X-UIDL: ^):!!`IP"!^1f!!L3O!! ○○株式会社 ○○様 ・ ・ ・
qmail を使った場合、メールヘッダを CRLF で改行した部分が二重の改行と解釈され、それ以降が本文として扱われてしまうようです。
この現象を回避するには、改行コードを LF にしてやればよいようです。
mb_encode_mimeheader()では自動的に CRLF が挿入されるため、あとから CR を除去して LF に変更してやればよいようです。
$subject = strtr( mb_encode_mimeheader($subject, "ISO-2022-JP"), array( "\r"=>"" ) );