concrete5のフォームブロックでは、標準では自動返信機能はありません。このため問い合わせフォームから送信した方は、『正しく送信されたのか?』と心配になるかもしれません。
標準では用意されていないものの、自動返信メールを送信できるようにプログラムが作られています。on_form_submissionというイベントが用意されています。(イベントはconcrete5の用語で、プログラム実行の途中で、追加の処理を行うものです。WordPress のアクションフックに似た働きです。)
イベント機能を使って、メール返信を自動化してみました。
<?php
// MIT License. 2019 Fumito MIZUNO
namespace Concrete\Package\OunziwFormAutoreply;
use Concrete\Core\Package\Package;
use Concrete\Core\Support\Facade\Events;
class Controller extends Package {
protected $pkgHandle = 'ounziw_form_autoreply';
protected $appVersionRequired = '8.4';
protected $pkgVersion = '0.7';
public function getPackageDescription()
{
return t("Auto Reply for Legacy Form");
}
public function getPackageName()
{
return t("Auto Reply for Legacy Form");
}
public function on_start()
{
Events::addListener('on_form_submission', function($event) {
$formEventData = $event->getArgument('formData');
if (filter_var($formEventData['replyToEmailAddress'],FILTER_VALIDATE_EMAIL)) {
$mh = $this->app->make('mail');
$mh->setSubject('自動返信: フォーム送信ありがとうございました。');
$to_email = $formEventData['replyToEmailAddress'];
$from_email = 'info@calculator.jp';
$mailbody = '自動返信: フォーム送信ありがとうございました。' . PHP_EOL;
$mailbody .= PHP_EOL;
$mailbody .= '下記の内容を受け取りました。' . PHP_EOL;
$mailbody .= PHP_EOL;
foreach($formEventData['questionAnswerPairs'] as $questionAnswerPair){
$mailbody .= $questionAnswerPair['question'] . PHP_EOL . $questionAnswerPair['answerDisplay'] . PHP_EOL . PHP_EOL;
}
$mailbody .= PHP_EOL;
$mailbody .= '担当者より、後ほどお返事を差し上げます。今しばらくお待ちくださいませ。' . PHP_EOL;
$mailbody .= PHP_EOL;
$mailbody .= '--' . PHP_EOL;
$mailbody .= '自動計算サイト' . PHP_EOL;
$mailbody .= 'https://calculator.jp/' . PHP_EOL;
$mailbody .= 'info@calculator.jp' . PHP_EOL;
$mh->to($to_email);
$mh->from($from_email);
$mh->setBody($mailbody);
$mh->sendMail();
} else {
\Log::addEntry("replyToEmailAddress is empty or invalid.");
}
});
}
}
フォームブロックでは、項目としてメールアドレスを用意し、このEmailアドレスへ返信をチェックするようにしてください。
こうすると、ホームページ訪問者が問い合わせフォームで入力したメールアドレスに、自動返信メールを送信します。こちらのページ「会社概要 | 自動計算サイト」で使用しています。
このプログラムは、オープンソース(MITライセンス)で公開していますので、無料でご利用いただけます。ウェブ制作会社などでクライアントワークに使うなどの商用利用にもご利用いただけます。
その他の記事もごらんください。