Authentication




Cancel OK
B!コメントする  2011-10-07 16:27:00 by old

CIのEmailクラス注意点

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") );

内容によってsubjectだけ文字化けしたり、本文だけが文字化けしたりしたので件名と本文の両方を文字コード変換してます。

これでちゃんと $this->email->send() してやれば日本語でのメール送信が可能になります。


CodeIgniter  

  • コメント
  • コメントはまだありません