concrete5 メールの文字化け:お問い合わせフォーム
XROSS CUBE(クロスキューブ)のサイトに使用している、素晴らしいCMS「concrete5」ですが、お問い合わせフォームからの通知メールが文字化けしてしまっていたのでその修正内容です。
結論から言うと、原因はサイトのエンコードとサーバー(PHP)の内部エンコーディングが違っていました。
↓こんな事をやっていたようです。
- フォームからUTF-8で入力
- PHPがUTF-8のデータをEUC-JPでmb_send_mailに渡す
- mb_send_mailがUTF-8のデータをEUC-JPとしてISO-2022-JP/Base64にエンコード
concrete5ではメールの送信にmb_send_mailを使用していたのでmailヘルパーのmb_send_mailを呼んでいるとこの直前(/concrete/helpers/mail.php 124行目付近)に以下を追記。
mb_internal_encoding("UTF-8");
本当ならここら辺も自動でやる様に変えた方が良いのですが、時間が無いのでコレで。
また、メールの送信元も設定されていなかったので/concrete/blocks/form/controller.phpの138行目付近に以下を追記。
$mh->from($this->recipientEmail , SITE);
ちなみにこのメールのテンプレートは/concrete/mail/block_form_submission.phpです。
届くメールの内容を変更したい場合はここを編集。
これで読めるメールが届くようになりました。