PHPでUTF8のメールの件名が文字化ける件について


今日は久々にはまってしまいました。

PHPでUTF8のメール送信処理を作成していたんですが、特定の文字列がある場合のみ、件名が文字化けるんですよ。しかも、ローカルのUbuntuの環境では起きず、テストサーバ上でのみ発生。。。あ、テストサーバのPHPのバージョン確認するの忘れた。

で、原因なんですが、どうやら「mb_encode_mimeheader」が原因だったようです。しょうがないので、以下のようにして自分で作成しました。base64限定ですけどね^^;

1
2
3
function encodeBase64MimeHeader($str,$charset='UTF-8'){
	return '=?'.$charset.'?B?'.base64_encode($str).'?='
}

最近、メールに関する情報を調べていたので理解しながら修正できた感があり、久々にPHPを書いてて嬉しくなりましたw

関連記事