この記事では、新規にメールテンプレートを作成し、管理画面で修正したり送信したりする方法を紹介します。


デバッグモードを設定しておくと、エラーが起きたときに詳細情報が表示されるようになります。
エラー箇所を探しやすくなるので、開発前に設定しておくのをオススメします。
デバッグモードの設定方法については 以下記事 で解説しています。
カスタマイズ後は、デバッグモードの解除を忘れないように。
まず、データベースにあるメールテンプレートを管理するテーブル『dtb_mail_template』に、新規テーブルを追加します。

テンプレートの追加は、既存のテンプレートをコピーするとやりやすいです。

今回は以下のように入力しました。
- name
-
注文受け付けメール(2)
- file_name
-
Mail/order2.twig
- mail_subject
-
ご注文を受け付けました

データベースに追加後は、テンプレートの中身を作成したファイルをサーバーにアップします。
テンプレートは一から自分で作っても良いですが、既存テンプレートをコピーした方が作りやすいです。既存のメールテンプレートは「src/Eccube/Resource/template/default/Mail」下に保存されており、この中にあるテンプレートの一部を「app/template/default/Mail」下にコピーします。
Mailフォルダがない場合は、フォルダも作成します。
このとき、既存テンプレートには「XXX.twig」と「XXX.html.twig」という2種類がセットになっているファイルがいくつかあります。メールの形式によって分かれており、前者はテキスト、後者はHTMLの内容を設定するファイルです。
追加するファイルは、最低限htmlが付いていないファイルを用意します。HTML形式のメールも用意したい場合は、htmlが含まれるファイルも用意します。
今回は両方とも用意しました。

STEP2までで、管理画面のメール設定から、追加したテンプレートの選択および修正ができるようになっているはずです。

これだけでもOKなのですが、受注管理から受注毎にメールを飛ばせるようにするには、もう1つファイルを操作しなければなりません。
「src/Eccube/Form/Type/Admin」下にある『OrderMailType.php』を開き、55〜56行目をコメントアウトします。
->add('template', MailTemplateType::class, [
'required' => false,
'mapped' => false,
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('mt')
// ->andWhere('mt.id = :id')
// ->setParameter('id', $this->eccubeConfig['eccube_order_mail_template_id'])
->orderBy('mt.id', 'ASC');
},
])
上記コードは一部のみを抜粋しています。
これで、受注管理のメール選択にすべてのテンプレートが表示されるようになります。

適切なテンプレートを選択しないとエラーが表示されます。
必要なテンプレートのみを表示させる方法については別記事で紹介予定です。

以上、メールテンプレートを新規に作成する方法を紹介しました。
「入金確認メール」など、デフォルトでは備わっていないテンプレートを作ったり、既存のテンプレートは残したまま別のテンプレートを用意したい場合などに、ぜひ活用してみてください。