ウェブ、ショウジン

EC-CUBEの韓国語対応-注文受付メール内の文字化け解消

2011-2-3
Category
CMS

EC-CUBE version 2.4.x(たぶん2.4.3か2.4.4)

メールテンプレートを使って送られる「注文受付メール」内にお客様の名前(ハングル)が表示されないという症状を解消する。

メール送信処理の設定が記述されているファイル
/data/class/SC_SendMail.php

上記ファイルにある以下の

// 本文の設定
function setBody($body) {
    $this->body = mb_convert_encoding($body, "JIS", CHAR_CODE);
}

mb_convert_encodingの部分を以下のように変更する。

// 本文の設定
function setBody($body) {
    $this->body = mb_convert_encoding($body, "UTF-8", "auto");
}

これでハングルで登録しているお客様の名前も表示されるようになった。

また、「注文受付メール」のメールタイトル(管理画面からハングルを登録)が「?」に化けていたので、これもメール本分と同様に変更。これらのメールテンプレートの内容自体は「管理画面 > メール設定 > テンプレート > 注文受付メール」から編集可能。

※上記部分で編集できない部分はSmartyテンプレート内に記述されているものを適宜変更する。
/data/Smarty/templates/default/mail_templates/

メール送信処理の設定が記述されているファイル
/data/class/SC_SendMail.php

上記ファイルにある以下の

// 件名の設定
function setSubject($subject) {
    $this->subject = mb_encode_mimeheader($subject, "JIS", 'B', "\n");
    $this->subject = str_replace("\x0D\x0A", "\n", $this->subject);
    $this->subject = str_replace("\x0D", "\n", $this->subject);
    $this->subject = str_replace("\x0A", "\n", $this->subject);
}

mb_convert_encodingの部分を以下のように変更する。

// 件名の設定
function setSubject($subject) {
    $this->subject = mb_encode_mimeheader($subject, "UTF-8", 'B', "\n");
    $this->subject = str_replace("\x0D\x0A", "\n", $this->subject);
    $this->subject = str_replace("\x0D", "\n", $this->subject);
    $this->subject = str_replace("\x0A", "\n", $this->subject);
}

これでメールテンプレートを使用して送信されるメールのタイトルと本文において、ハングルを問題なく表示できるようになった。

2011年2月12日追記:
送信元(From)と宛先(To)部分のハングルも化けるので、これも修正。EC-CUBEの韓国語対応-自動送信メール内の文字化け解消(送信元と宛先部分)を参照のこと。

Categories

Tag Cloud

AdMob Android Apache centos CodeIgniter EC-CUBE facebookアプリ facebookページ feed Firefox Flash google googleanalytics htaccess iPad iPhone JavaScript lamp mobile nginx ogp pear php plugin rollover rss sendmail setting smarty ssh Titanium Mobile Titanium Studio tutorial ubuntu vim VirtualBox vmware vps Windows WordPress xampp youtube さくらインターネット アクセス解析 カスタム投稿