半角カタカナや①や㎡など機種依存文字が入ると?に文字化けする問題がありました。
iso-2022-jp で扱うことができないことになっているので、
普通ならば iso-2022-jp で扱える形式に変換するところですが、
思い切って無視して「そのまま」送信することで今回問題回避しました。
参考にしたのは次のサイト
http://d.hatena.ne.jp/u87/20100308/
mb_language('ja');
mb_internal_encoding('UTF-8');
$e_subject = mb_encode_mimeheader($subject);
$e_body = mb_convert_encoding($body, 'ISO-2022-JP-MS');
$mail_header = "From: ".mb_encode_mimeheader(mb_convert_encoding("フロム","JIS","UTF-8"))."<".$from.">"."\n";
$mail_header .= "Content-Type: text/plain; charset=ISO-2022-JP\r\n";
$mail_header .= "Content-Transfer-Encoding: 7bit";
mail($to, $e_subject, $e_body, $mail_header, "-f $from");
ポイントは mb_send_mail()を使わずに、mail()を使います。
また、iso-2022-jp を宣言しておいて、iso-2022-jp-ms で変換します。
また、iso-2022-jp を宣言しておいて、iso-2022-jp-ms で変換します。
一般的な日本語環境であれば、問題なく文字化けのないメールを見ることができると思います。
0 件のコメント:
コメントを投稿