カスタムテンプレートの使い方

自動返信・管理者通知メールの文面を自由に書き換えるカスタムテンプレートの使い方です。入力値の埋め込み・条件分岐・複数選択の展開などを説明します。

カスタムテンプレートを使うと、自動返信メール(訪問者向け)と通知メール(管理者向け)の本文を自由な文面に書き換えられます。フォームの入力値の埋め込み、条件分岐、複数選択項目の展開などに対応しています。

設定はフォームの「メール設定 > 文面」(訪問者向け)と「メール設定 > 管理者文面」(管理者向け)で、「カスタムテンプレート」を選ぶと編集できます。

テキストとHTMLの2種類を設定する

カスタムテンプレートには「テキストテンプレート」と「HTMLテンプレート」があり、メールは両方を含むマルチパート形式で送信されます。どちらが表示されるかは受信者のメールクライアントの設定次第のため、両方のテンプレートを同じ内容に揃えてください。片方だけ更新すると、受信者によって古い文面が表示されます。

2種類ある理由の詳細はカスタムテンプレートのよくある質問をご参照ください。

メール設定の「文面」タブ。テンプレートヘッダー・フッター・テキストテンプレート・HTMLテンプレートの入力欄

フォームの入力値を埋め込む

フォームのinput要素等のname属性の値{{ }} で囲むと、その項目の入力値が埋め込まれます。

例えば以下のフォームの場合、

<form>
  <input type="text" name="お名前" />
  <input type="email" name="email" />
  <textarea name="お問い合わせ内容"></textarea>
  <button type="submit">送信</button>
</form>

テンプレートは次のように書けます。

{{ お名前 }} 様

お問い合わせありがとうございます。
以下の内容で受け付けました。

メールアドレス: {{ email }}
お問い合わせ内容:
{{ お問い合わせ内容 }}
テキストテンプレートの場合

項目名の書き方の注意

  • name属性に半角スペースやドットが含まれる場合、受信時にアンダースコアに変換されます(例: GitHub URL{{ GitHub_URL }})。
  • name属性にハイフンなどの記号が含まれる場合は {{ attribute(_context, 'select-store') }} の書き方を使います。{{ select-store }} と書くとエラーにならず「0」が出力されるためご注意ください。詳細はよくある質問をご参照ください。
  • フォームのHTMLを変更できる場合は、name属性を英数字とアンダースコアだけ(例: select_store)にしておくと迷いがありません。name属性の設定ルールもあわせてご参照ください。

条件分岐(if)

{% if %} で、入力の有無などに応じて文面を変えられます。任意入力の項目に「未入力」と表示する例です。

電話番号: {% if 電話番号 %}{{ 電話番号 }}{% else %}未入力{% endif %}

複数選択の項目(ループ・join)

チェックボックスの複数選択(name="興味のある分野[]" のような項目)の値は配列で渡されます。join フィルタで連結するか、{% for %} で1つずつ出力してください。

興味のある分野: {{ 興味のある分野|join('、') }}

{% for 分野 in 興味のある分野 %}
- {{ 分野 }}
{% endfor %}

使えるフィルタ・タグ

テンプレートの記法にはTwigを使用していますが、安全のため使える機能を以下に制限しています。

  • タグ: if / for
  • フィルタ: nl2br / join / date / format / urlencode / escapee
  • 関数: attribute

よく使うのは、改行をHTMLの<br>に変換する nl2br(HTMLテンプレートでtextareaの入力値を表示する場合に必須)と、複数選択を連結する join です。

<p>お問い合わせ内容:<br>
{{ お問い合わせ内容|nl2br }}</p>
HTMLテンプレートでの nl2br の使用例

添付ファイル

フォームで送信された添付ファイルは、テンプレートに書かなくても自動でメールに添付されます。本文にファイル名を表示したい場合のみ、{{ ファイル項目名.name }} と書いてください。

{{ attachment.name }} → ⭕ ファイル名が出力される
{{ attachment }} → ❌ 送信エラーになる

問い合わせIDを記載する

問い合わせごとの固有IDは {{ HYPER_FORM_MESSAGE_ID }} で埋め込めます。詳細は問い合わせIDをメール内に記載するをご参照ください。

メールの件名にも埋め込める

「メール設定 > 基本」の「メールの件名」「管理者向けメール件名」でも、本文と同じ {{ 項目名 }} の書き方でフォームの入力値を埋め込めます。

件名固有の挙動が2つあります。

  • 入力値に含まれる改行は半角スペースに置き換えられ、件名全体は200文字で切り詰められます。
  • 件名のテンプレートに誤りがあった場合、メールの送信は止まらず、書いた文字列がそのまま件名になります(受信メールの件名に {{ が見えていたら誤りのサインです)。

訪問者向けと管理者向けの関係

「文面」タブで設定したテンプレートは訪問者向けの自動返信メールに使われ、初期設定では管理者への通知メールにも同じ文面が使われます(文面が同じだと、通知メールにそのまま返信して訪問者とやりとりできるためです。通知メールの返信先には訪問者のメールアドレスが設定されます)。

管理者向けに別の文面(社内向けの体裁、全項目の一覧など)を使いたい場合は、「管理者文面」タブで「管理者向けに別の文面を使用する」を有効にしてください。管理者向けテンプレートの書き方は訪問者向けと共通です。

動作確認とエラー時の挙動

テンプレートは保存時には構文チェックされません。保存後に各編集画面の「プレビューを見る」で、サンプル値を使った実際の出力を確認してください。テンプレートに誤りがある場合はプレビュー画面にエラーが表示されます。

誤りのあるテンプレートのまま問い合わせを受けた場合は、次のようになります。

  • 該当のメールは送信されません(訪問者の送信操作自体はエラーにならず、問い合わせデータも保存されます)。
  • 管理者にはエラー通知メールが届きます。
  • テンプレートを修正した後、問い合わせの詳細画面の「メールを再送」から改めて送信できます。
メールプレビュー画面のエラー表示。「訪問者向けメールテンプレートに誤りがあります」と本文をプレビューできない旨が表示されている

その他の注意点

  • カスタムテンプレートでは、標準テンプレート用の「テンプレートスタイル」欄(CSS)は適用されません。HTMLテンプレートに直接 style 属性や <style> タグを記述してください。
  • アンダースコア始まりのname属性(通知に含めない項目)も、カスタムテンプレートに {{ _項目名 }} と書くと出力されます。非表示のままにしたい項目はテンプレートに書かないでください。

関連ページ