EC-CUBE 2.13.5のシステムから送信するメールの件名は、通常メールテンプレートの中の”mail_title.tpl”というものが使用されます。
EC-CUBEから送る送信メールの件名を変更したければ、基本的にこの”mail_title.tpl”を編集すればいいわけですが、全ての送信メールの件名が変わるのが、意外と困りもの。
例えば、デフォルトではメールの件名は
【ショップ名】ご注文ありがとうございます云々
という風になっているんですが、
「冒頭のショップ名が長ったらしくてうざいから消したいな、でも注文完了時のメールだけは残しておきたいな」
なんて時に、単に”mail_title.tpl”を編集するだけでは実現できないんですね。
じゃあどうするのかと言いますと、メールを送信するプログラムに手を加えればいい、と。
参考:http://kayakuguri.github.io/blog/2013/12/04/ec-cube-mailtitle/
例に挙げた
「注文完了時のみ件名に店名が入る」
という仕様を実現してみたのが、以下のコード。
SC_Helper_Mail.phpを編集します。
// メール送信処理
$objSendMail = new SC_SendMail_Ex();
$bcc = $arrInfo['email01'];
$from = $arrInfo['email03'];
$error = $arrInfo['email04'];
if($template_id==1){
$tosubject = "【" . $arrInfo['shop_name'] ."】". $this->sfMakeSubject($tmp_subject, $objMailView);
} else {
$tosubject = $this->sfMakeSubject($tmp_subject, $objMailView);
}
注文完了時の送信メールだけ件名テンプレートの前にショップ名を追加、それ以外では件名テンプレートのみ読み込む、という仕組みです。
“template_id==1″で、注文完了時の送信メールを指定しています。
なお、モバイル版の注文完了メールは今どき使わないだろうということで省略しました。
なお、事前に件名テンプレートを編集して、ショップ名の記述を消しておきましょう。
あまりかしこくないというか、美しくないやり方のような気もしますが、簡易的な対応ならこれで十分ではないでしょうか。