前回の質問で、
携帯・PCともに、メール本文は「sjis-win+Base64」か「UTF-8+Base64」であれば、文字化けなくメールを送信できることが整理できました。
問題はメールヘッダで、一部の機種(昔のAU機)ではUTF-8が文字化けするとの情報があります。
いまのところ、機種依存しない処理としたいため、
メールヘッダとメール本文のエンコード処理を「sjis-win+Base64」で検討しているのですが、この場合、機種に依存する問題があるかどうかわかりません。
質問は、メールヘッダを「sjis-win+base64」でエンコードしたものを、携帯やPCにメール送信する際に制限事項があればご教授をお願いいたします。
携帯メールは、Docomo(FOMA), AU, Softbank(3G)の標準メーラー
PCメールは、WindowsのOutlook, Becky, Thanderbardを想定しています(Macは非対象です)
メールヘッダに関しては統一見解が書かれた文献が見当たらないため、よろしくお願いいたします。
抽象的な質問で申し訳ありませんが、よろしくお願いいたします。
前回も回答しましたが、電子メールの Subject は、ISO-2022-JP(いわゆるJISコード)をBase64エンコードするのが標準方式です。
http://ja.wikipedia.org/wiki/ISO-2022-JP
ご質問に挙げられているメーラーであれば、SJISやUTF-8をBase64でエンコードしても化けないと思いますが、Mac/Linuxのメーラーだと化ける場合があります。
また、ISO-2022-JPで定義されていない丸付数字や半角カタカナは、そもそも電子メールで送ること自体がマナー違反だと考えてください。
これらの文字は、国産メーラーであれば化けないことが多いのですが、相手がどんなメーラーを使っているか分からない状況では化ける可能性があるためです。
sendmailでヘッダをISO-2022-JP、本文をBase64にする場合、MIMEをどのように設定すればよいのでしょうか?
$send_subject = mb_convert_encoding($subject, 'ISO-2022-JP', 'sjis-win');
$send_body = base64_encode($body);
$headers['MIME-Version'] = '1.0';
$headers['Content-Type'] = 'text/plain; charset=Shift_JIS';
$headers['Content-Transfer-Encoding'] = 'base64';
$mail = Mail::factory('sendmail');
$result = $mail->send($recipients, $headers, $send_body);
上記をbeckeyで試したところ文字化けせず、Thanderbardで試すと文字化けしました。
やはり統一しなければいけないのでしょうか?