[CakePHP2.x]CakeEmailでタイトルや本文が文字化けする場合

CakeEmailでタイトルや本文が文字化けする場合の対処法です。
まず最大の原因は、文字コード変換を規約通りに扱わない古いメーラーなどが、UTF-8に対応していないのが原因。
本文に関してはCakeEmailのcharsetを変更してあげればいいのですが、ヘッダーについてはあまり言及がありません。
実はheaderCharsetという別のメンバ変数があります。
ということで下記のような感じで設定しておけばOKです。

$mail = new CakeEmail();
$mail->charset = 'ISO-2022-JP';
$mail->headerCharset = 'ISO-2022-JP';

これでほぼ安心です。

が、実は問題があって、お使いの文字コード(普通はutf-8)からISO-2022-JPに変換する際にISO-2022-JPにない文字が結構ありますが、これは対処しようがありません。
入力チェックのレベルで送信データの中に変換できない文字を受け付けないようにするしかないかと思います。

タイトルとURLをコピーしました