EC-CUBEのカスタマイズ、ネットショップ制作メモ

主にEC-CUBEを利用したネットショップの制作、カスタマイズや独自機能の開発について

concrete5 メールの文字化け:お問い合わせフォーム

XROSS CUBE(クロスキューブ)のサイトに使用している、素晴らしいCMSconcrete5」ですが、お問い合わせフォームからの通知メールが文字化けしてしまっていたのでその修正内容です。

結論から言うと、原因はサイトのエンコードとサーバー(PHP)の内部エンコーディングが違っていました。

↓こんな事をやっていたようです。

  1. フォームからUTF-8で入力
  2. PHPUTF-8のデータをEUC-JPでmb_send_mailに渡す
  3. 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です。
届くメールの内容を変更したい場合はここを編集。


これで読めるメールが届くようになりました。