フォームへの入力値によって自動返信メールの内容を変えたい(例:選んだコースによって参加費が変わるセミナー申し込みフォーム)
A-Formでは、管理者宛ておよびエンドユーザ宛て自動返信メールのそれぞれについて独立でテンプレートファイルを持っています。このテンプレート内で、MTタグを使ってユーザーの入力値を取得したり, 入力値によって表示の出し分けたりすることができます。
例として、次のようなシンプルなフォームを作ってみました。
上は生成されたフォーム, 下図はA-Formの編集画面です。
テンプレートの出し分けで使いたいので、パーツIDには明示的に名前を振っています。
今回は”参加イベント”(パーツIDは event にしました) の入力値によって参加費表示を変えるように書いてみます。
フォームは実際に試すことができます。
https://www.ark-web.jp/movabletype/demo/aform_pcmobile/event-seminar-test/mail-dashiwake.html
A-Formの自動返信メールのテンプレートは、下記に用意されています。
- ユーザー宛て用テンプレート plugins/AForm/tmpl/mail_aform_customer.tmpl
- 管理者宛て用テンプレート plugins/AForm/tmpl/mail_aform_admin.tmpl
基本的にはこれらを書き換えれば良いのですが、そうすると全てのフォームに同じ出し分けが適用されてしまいます。
今回は,、特定のイベント受付フォーム(aform036)のユーザー宛てメールにだけ適用したいと想定します。
特定のフォームにのみ適用する場合は、そのフォームIDの番号でディレクトリを作って元になるテンプレートをコピーし、コピー側を編集します。
今回ならaform036なので、以下のファイルを編集します。
plugins/AForm/tmpl/036/mail_aform_customer.tmpl ...................^^^.........................
中身はこのように書きます。
入力フィールドを mt:loop で順次取得します。パーツID値が event であれば、その入力値(label_value)を見て、1000円/5000円/0円(例外処理)に出し分けします。
<mt:loop name="fields">
<mt:If name="parts_id" eq="event">あなたの参加費は、
<mt:If name="label_value" like="セミナーのみ">1,000
<mt:ElseIf like="セミナーと懇親会">5,000
<mt:Else>0
</mt:If>円です
</mt:If>
</mt:loop>
※読みやすさのために改行を入れていますが、実際は改行なでmt:loop全体を一行に納めてください。出力がそのままテキストメールに差し込まれるしくみのため、loop内に改行を挟むとメール本文に余分な空行が入ってしまいます。
届いたメールには、
あなたの参加費は、5,000円です
のように書かれるはずです。
今回はパーツIDによって判別しましたが、パーツの種別で判別することもできます。
例えば見出しパーツのみ、自動返信メール内に書き出さないようにしたいなら次のように書きます。
モディファイア type でそのパーツの種別が取得できます。
<mt:loop name="fields">
<mt:Unless name="type" eq="label">do something...(ただし見出しパーツを除く)</mt:Unless>
</mt:loop>
各パーツごとの値は次の通りです。
| 定番パーツ | type名(eq=”xxxxx”部分) |
| メールアドレス | |
| 郵便番号 | zipcode |
| 都道府県 | prefecture |
| 電話番号 | tel |
| URL | url |
| 個人情報保護方針 | privacy |
| カレンダー | calendar |
| 氏名 | name |
| 氏名フリガナ | kana |
| 基本パーツ | type名(eq=”xxxxx”部分) |
| 見出し | label |
| コメント・注釈 | note |
| テキスト | text |
| 複数行テキスト | textarea |
| ドロップダウンリスト | select |
| チェックボックス | checkbox |
| ラジオボタン | radio |
| ファイルアップロード | upload |
| 外部パラメータ | parameter |
| パスワード | password |
