メールテンプレート
メールテンプレートにはフォームの項目で使用したカスタムフィールドの変数やグローバル変数などが記述されています。
例えば /themes/site2015/contact/form/adminbody.txt では以下のような記述をしています。
{name} 様 よりお問い合わせがありました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
受付日時:%{Y}年%{n}月%{j}日 %{H}:%{i}:%{s}
■お問い合わせ情報
ご用件 : {description}[raw]
お問い合わせ内容:
{inquiry}[raw]
■お客様情報
会社名 : {company}[raw]
お名前 : {name}[raw]
メールアドレス: {email}
お電話番号 : {phone}
ご住所 : 〒{zip} {pref_code} {address}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━site2015テーマのフォームのメールテンプレートはテキストファイルのためHTMLは記述していません。Ver.2.5よりHTMLメールにも対応となりましたので、HTMLメールをご利用になる際はVer.2.5以降のバージョンをお使いください。
また、校正オプションを記述することができます。校正オプションについてはリファレンスをご覧ください。 例えばお問い合わせ内容のテキストを改行するには以下のような校正オプションを記述します。
{inquiry}[escape|nl2br]メールテンプレートをTwig で記述する(Ver. 3.2.25 ~)
--------------------------------------------------------------------------------------------------
本メールはシステムからの自動配信メールです。
--------------------------------------------------------------------------------------------------
この度はお問い合わせいただき、ありがとうございました。
お問い合わせフォームより、以下の内容で送信いたしました。
その他、何かご不明な点などございましたら、お気軽にお問い合わせください。
以下の内容で間違いがないかご確認ください。
内容に不備がありましたら、本メールにご返信ください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
受付日時:{{ 'now'|date('Y年n月j日 H:i:s') }}
■お問い合わせ情報
お名前 : {{ name.value }}
メールアドレス : {{ email.value }}
お問い合わせの種別: {{ description.value }}
お問い合わせ内容:
{{ inquiry.value }}
{% if cue.array %}
このサイトを何で知りましたか?:
{{ cue.array|join(', ') }}
{% endif %}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
本メールについて心あたりがない場合は、大変お手数ですが
本メールをご返送いただきますようお願い申し上げます。
--------------------------------------------------------------------------------------------------
{{ BLOG_NAME }}
〒000-0000
○○県○○○市○○区 ××の××の××
電話番号: 123-456-7890
E-mail: ■■■@■■■■.■■{% extends '/_layouts/mail.html.twig' %}
{% block body %}
<h1 class="center">お問い合わせありがとうございます。</h1>
<p class="center supplement">
----本メールはシステムからの自動配信メールです。---
</p>
<p>
この度はお問い合わせいただき、ありがとうございました。
</p>
<p>
お問い合わせフォームより、以下の内容で送信いたしました。
</p>
<p>
その他、何かご不明な点などございましたら、お気軽にお問い合わせください。 以下の内容で間違いがないかご確認ください。
</p>
<p>
内容に不備がありましたら、本メールにご返信ください。
</p>
<hr />
<p>
受付日時:{{ 'now'|date('Y年n月j日 H:i:s') }}<br />
通番 : {{ serialNumber.value }}
</p>
<hr />
<h2 class="center red">お問い合わせ情報</h2>
<div class="no-scroll">
<table class="contents">
<tbody>
<tr>
<th>お名前</th>
<td>{{ name.value }}</td>
</tr>
<tr>
<th>メールアドレス</th>
<td>{{ email.value }}</td>
</tr>
<tr>
<th>お問い合わせ種別</th>
<td>{{ description.value }}</td>
</tr>
<tr>
<th colspan="2">お問い合わせ内容</th>
</tr>
<tr>
<td colspan="2">{{ inquiry.value|nl2br }}</td>
</tr>
{% if cue.array %}
<tr>
<th>このサイトを何で知りましたか?</th>
<td>{{ cue.array|join(', ') }}</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<p>
本メールについて心あたりがない場合は、大変お手数ですが<br />
本メールをご返送いただきますようお願い申し上げます。
</p>
<hr />
<p></p>
<address>
<dl>
<dt>
{{ BLOG_NAME }}
</dt>
<dd>〒000-0000</dd>
<dd>○○県○○○市○○区 ××の××の××</dd>
<dd>電話番号 : <a href="tel:123-456-7890">123-456-7890</a></dd>
<dd>E-mail : <a href="mailto:■■■@■■■■.■■">■■■@■■■■.■■</a></dd>
</dl>
</address>
{% endblock %}
Ver. 3.2.25 より、テーマ設定もしくはtemplate.yaml で tpl_twig を有効にしている場合、メールテンプレートおよびフォームの本文・件名(管理画面での直接入力)を Twig で記述できるようになりました。
テーマファイル経由は制作者向けの機能として include/extends・Markdown・extendsTwig の独自フィルタなど公開側テーマと同じ仕組みが使えます。
一方、フォームの本文・件名のように運営者が管理画面から直接入力する文字列は、利用できるタグ・フィルタ・関数を絞ったサンドボックス環境で評価され、送信者側の入力によるテンプレートインジェクションを防ぎます。
エスケープ方式はファイルの拡張子から自動判定されます(.txt 系はエスケープなし、.html 系は HTML エスケープ)。