concrete5のフォームで自動返信メールを設定する方法

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ライセンス)で公開していますので、無料でご利用いただけます。ウェブ制作会社などでクライアントワークに使うなどの商用利用にもご利用いただけます。

 

その他の記事もごらんください。

 

公開日 いいねによる獲得 投げ銭による獲得 サポーター
: : :
2019/03/26 21.70 ALIS 0.00 ALIS
mizuno's icon'
  • mizuno
  • @mizuno
月70万PVウェブメディア「計算フォーム」 https://calculator.jp/ でウェブ集客支援。書籍「WordPressユーザーのためのPHP入門」他一冊。TWITTER: @ounziw
コメントする
コメントする