LoginSignup
5

More than 5 years have passed since last update.

posted at

updated at

TransmitMail 2 で入力内容に応じて送信メールの宛先を切り替える

TransmitMail 2 で入力内容に応じて送信メールの宛先を切り替えるカスタマイズ例をご紹介します。

開発および動作確認環境

開発および動作確認環境は下記の通りです。

  • TransmitMail: 2.0.0
  • PHP: 5.6.10

input.html に入力フィールドを追加する

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/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 に作成します。

lib/exTransmitMail.php
<?php
class exTransmitMail extends TransmitMail
{
}

exTransmitMail クラスに機能を実装する

メール送信の前の処理となる afterSetTemplateProperty メソッドを追加し、そこに処理を書いていきます。( afterXXX メソッドについては Wiki をご参照ください。)

lib/exTransmitMail.php
/**
 * メール送信の前の処理
 */
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.phplib/exTransmitMail.php の読み込みと TransmitMail クラスではなく exTransmitMail クラスを利用するように修正します。

index.php
<?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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5