スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP] mail() でメールを送る際によくある Subject の文字化けやら

何回か忘れてやらかすのでメモしておこう。

細かい話はメールのことなのでやれRFCがどうのとかあると思うのですが、
PHPで作成したメールフォームで送信されたメールが一部の環境(たいていは Outlook Express)でSubject が文字化けするとか、文の先頭に余計な改行が入っているとか指摘されることがあります。

・文の先頭に余計な改行

 これは、mail() で引数としてヘッダを与えるときに、ヘッダ文字列の最後に改行があると発生。
ヘッダと本文の間に余計な改行が発生して、最初の改行でヘッダが終わりと見なされて、次の改行が本文に含まれてしまうのだろう、と思う。
 mail() の引数としてのヘッダ文字列の末尾に改行が入らないようにすることで解決。

・Subject が文字化けする

 mb_encode_mimeheader() が、こっちの思ったように処理してないことがあるように思える。
 細かいことはわからんが、下記のようにベタで Subject を変換することでおおむね解決。

$mail_subject = mb_convert_encoding($mail_subject,"iso-2022-jp","EUC-JP");
$mail_subject = "=?iso-2022-jp?B?".base64_encode($mail_subject)."?=";

関連記事
スポンサーサイト

comment

管理者にだけメッセージを送る

検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。