CodeigniterでEmailクラスを使ったんですが文字化けが発生したので対応策を記載しておきます。
実は最初は気づかなくて、気づいた原因がThunderbirdで受け取って発覚しました。
確認したメーラーはGmailとThunderbirdなんですが、いつも開発のテスト送信先にGmailを使っていて文字化けもなく問題なかったので、内部のテストを行ったところ文字化けしていたと・・・。
テストはちゃんと複数環境でやるものですね。
手を抜いたつもりはなかったんですが、Gmail先生が偉すぎて勝手に解釈して表示してくれたわけです。
コードは基本的にUTF-8で記述しております。
今までもEmailクラスを使うことはあったんですが、書いてある事が単純だったためか文字化けはでてませんでした。
日本語のメールを送信する際はiso-2022-jpへの変換が必要になりますので以下にそのときに使ったソースを載せます。
/*
* デフォルト設定変更
*/
$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-2022-jp';
$config['wordwrap'] = FALSE;
$this->email->initialize($config);
// 送信元
$this->email->from( $user_email );
// 送信先
$this->email->to($user_email);
// subjectをUTF-8からISO-2022-JPへ変換
$this->email->subject( mb_convert_encoding("お知らせ", "ISO-2022-JP", "UTF-8") );
// 本文をUTF-8からISO-2022-JPへ変換
$this->email->message(mb_convert_encoding("試験サイト", "ISO-2022-JP", "UTF-8") );
関連記事