LoginSignup
3
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-11-04

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

3
5
0

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
  3. You can use dark theme
What you can do with signing up
3
5