baserCMS メールフォーム、自動応答メールのシグニチャーをフィールドの選択項目によって変更する方法
以前に ユーザーズフォーラム のトピックとして質問のあった、
「お問い合わせフォームの自動送信メールに記載されるシグニチャー(担当部署名や店舗名、それに付属する電話番号など)をユーザーが選択した該当フィールド(例えば担当部署や店舗名のたぐい)名に応じて変更したい。」
という要件に回答したものです。
方法(運用面も含めて)は、いくつかある様に思いますが、/theme/テーマ名/Emails/text/内の自動送信用のメールテンプレートファイルに手を入れるという方法の提案です。
ざっくりとした手順は以下。
- 差し替える店舗名ごとのシグニチャーを準備する。
- 店舗名ごとのシグニチャー差し替え用の条件分岐コードを記載したエレメントファイル(仮に /theme/テーマ名/Emails/text/mail_data_branch.php )を作成する。
- 現在利用しているメールテンプレートファイル(仮に /theme/テーマ名/Emails/text/mail_default.php )をコピーしてリネーム(仮に mail_second.php )する。
- 作成したmail_second.php内の差し替えたい連絡先のコード部分にエレメントファイル呼び出し関数を挿入する。
- 管理画面のメールフォーム設定画面>詳細設定>送信メールテンプレート名欄で mail_second.php をテンプレートファイルとして選択する。
2.項で作成する mail_data_branch.php は、既存の連絡先コード(管理画面>プラグイン管理>メール基本設定で設定する)と分けて追記挿入する格好なのか、書き換えるのかで多少違いますが、サンプルのコードは追記挿入するイメージで記載しています。swich文を使った方がシンプルな気がしますが、書き換えたい連絡先電話番号に付随して表示させたい部門名を追記したり、改行したりしたいケースを想定すると素直にif文の方が扱いやすいのではないかと思い、以下のような mail_data_branch.php のサンプルコードを作成。
?php foreach ($mailFields as $field): ?>
<?php $field = $field['MailField'] ?>
<?php // 'branch'は、条件分岐を行う選択項目のフィールド名 ?>
<?php if ($field['field_name'] === 'branch'): ?>
<?php $pref = trim($this->Maildata->control($field['type'], $message[$field['field_name']], $this->Mailfield->getOptions($field))) ?>
<?php if ($pref === 'A店'): ?>
<?php echo 'A店' ?>
<?php echo '111-1111' ?>
<?php elseif ($pref === 'B店'): ?>
<?php echo 'B店' . PHP_EOL . ' ', '222-2222' ?>
<?php else: ?>
<?php echo 'C店' ?>
<?php echo 'C店', ' ', '製菓部門' . PHP_EOL . ' ', '333-3333' ?>
<?php endif ?>
<?php endif ?>
<?php endforeach ?>
上記の$prefの文字列は、条件分岐の選択項目のリスト内容に合わせて変更します。
ここで、コメントアウトに記載した「条件分岐の選択項目のフィールド名」というのは、以下の様なイメージです。
次に、以下がmail_default.phpをリネームしたmail_second.phpです。(まだ、mail_data_branch.php呼出コードは挿入していません。)
<?php
/**
* baserCMS : Based Website Development Project <https://basercms.net>
* Copyright (c) baserCMS Users Community <https://basercms.net/community/>
*
* @copyright Copyright (c) baserCMS Users Community
* @link https://basercms.net baserCMS Project
* @package Baser.View
* @since baserCMS v 4.4.0
* @license https://basercms.net/license/index.html
*/
/**
* メールフォーム送信メール本体
* 呼出箇所:メールフォーム(メール送信時)
*
* @var array $other その他データ
* @var array $mailConfig メール設定データ
*/
?>
<?php echo $other['date'] ?>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆◇ イベント情報の投稿を受け付けました ◇◆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<?php if ($other['mode'] === 'user'): ?>
<?php echo __('この度は、イベント情報の投稿ありがとうございます。') ?>
<?php echo __('送信内容は下記のようになっております。') ?>
<?php elseif ($other['mode'] === 'admin'): ?>
<?php echo $mailConfig['site_name'] ?> <?php echo __('へのイベント情報の投稿を受け付けました。') ?>
<?php echo __('受信内容は下記のとおりです。') ?>
<?php endif; ?>
━━━━◇◆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ <?php echo __('イベント情報の投稿内容') ?>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆◇━━━━
<?php echo $this->element('../Emails/text/mail_data') ?>
───────────────────────────────────
<?php if ($other['mode'] === 'user'): ?>
<?php echo __('なお、このメールは自動返信メールとなっております。') ?>
<?php echo __('メールを確認させて頂き次第、早急にご連絡させていただきます。') ?>
<?php echo __('恐れ入りますがしばらくお待ちください。') ?>
<?php elseif ($other['mode'] === 'admin'): ?>
<?php echo __('なお、このメールは自動転送システムです。') ?>
<?php echo __('受け付けた旨のメールもユーザーへ送られています。') ?>
<?php endif; ?>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<?php echo $mailConfig['site_name']; ?>
<?php echo $mailConfig['site_url'] ?> <?php echo $mailConfig['site_email']; ?>
<?php if ($mailConfig['site_tel']): ?>TEL <?php echo $mailConfig['site_tel']; ?><?php endif; ?><?php if ($mailConfig['site_fax']): ?> FAX <?php echo $mailConfig['site_fax']; ?><?php endif; ?>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
このmail_second.php内のシグニチャーに該当するコード部分に、以下のようにmail_data_branch.phpの呼出コードを挿入します。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<?php echo $mailConfig['site_name']; ?>
<?php echo $mailConfig['site_url'] ?> <?php echo $mailConfig['site_email']; ?>
<?php if ($mailConfig['site_tel']): ?>TEL <?php echo $mailConfig['site_tel']; ?><?php endif; ?>
<?php if ($mailConfig['site_fax']): ?>FAX <?php echo $mailConfig['site_fax']; ?><?php endif; ?>
<?php echo $this->element('../Emails/text/mail_data_branch') ?>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
実際の送信されてくるメール内のテキストレイアウトを調整するため、phpコードの前後にスペースを入れたりする必要があったりなど、ちょっと独特ですが、何度か trial and error してみると段々と合点がいってくると思います。
本記事は、baserCMSユーザーズフォーラムに投稿した記事を再校正して作成しました。