TransmitMail 2 で入力内容に応じて送信メールの宛先を切り替えるカスタマイズ例をご紹介します。
開発および動作確認環境
開発および動作確認環境は下記の通りです。
- TransmitMail: 2.0.0
- PHP: 5.6.10
input.html
に入力フィールドを追加する
input.html
に下記のような入力フィールドを追加します。
<table>
<tr>
<th>お問い合わせ内容</th>
<td>
<select name="お問い合わせ内容">
<option value="利用方法について" {$selected.お問い合わせ内容.利用方法について}>利用方法について</option>
<option value="資料請求" {$selected.お問い合わせ内容.資料請求}>資料請求</option>
<option value="その他" {$selected.お問い合わせ内容.その他}>その他</option>
</select>
</td>
</tr>
</table>
config.yml
を修正する
config/config.yml
に「利用方法について」と「資料請求」の場合のメール送信の宛先を追加します。
config:
to_email: info@example.com
to_email_support: support@example.com
to_email_material: material@example.com
exTransmitMail.php
を作成する
TransmiMail
クラスを継承した exTransmiMail
クラスを lib/exTransmitMail.php
に作成します。
<?php
class exTransmitMail extends TransmitMail
{
}
exTransmitMail
クラスに機能を実装する
メール送信の前の処理となる afterSetTemplateProperty
メソッドを追加し、そこに処理を書いていきます。( afterXXX
メソッドについては Wiki をご参照ください。)
/**
* メール送信の前の処理
*/
public function afterSetTemplateProperty()
{
if ($this->page_name === 'finish') {
switch ($this->post['お問い合わせ内容']) {
case '利用方法について':
$this->config['to_email'] = $this->config['to_email_support'];
break;
case '資料請求':
$this->config['to_email'] = $this->config['to_email_material'];
break;
case 'その他':
default:
// 「その他」または選択がない場合は to_email 宛にメールを送信するので、ここでは特に何もしない
break;
}
}
}
index.php
を修正する
index.php
に lib/exTransmitMail.php
の読み込みと TransmitMail
クラスではなく exTransmitMail
クラスを利用するように修正します。
<?php
require_once 'lib/TransmitMail.php';
require_once 'lib/exTransmitMail.php';
$tm = new exTransmitMail('config/config.yml');
$tm->run();
動作確認
「お問い合わせ内容」によってメールの宛先が切り替わることが確認できました。
まとめ
以上、TransmitMail 2 で入力内容に応じて送信メールの宛先を切り替えるカスタマイズ例をご紹介でした。こんな感じでカスタマイズすることで、TransmitMail本体には手を加えずにカスタマイズすることが可能です。
今回のカスタマイズのコードは下記ブランチで公開をしています。
dounokouno/TransmitMail at example_branch_of_email
修正ファイルは下記のコミットをご参照ください。
入力内容に応じて送信メールの宛先を切り替えるカスタマイズ例 · dounokouno/TransmitMail@6f205db