LoginSignup
0
0

More than 5 years have passed since last update.

concrete5のレガシーフォームで自動返信メールを設定する

Posted at

concrete5のフォームブロックでは、標準では自動返信機能はありません。このため問い合わせフォームから送信した方は、『正しく送信されたのか?』と心配になるかもしれません。

イベント機能を使って自動返信させる

標準では用意されていないものの、自動返信メールを送信できるようにプログラムが作られています。on_form_submissionというイベントが用意されています。(イベントはconcrete5の用語で、プログラム実行の途中で、追加の処理を行うものです。WordPress のアクションフックに似た働きです。)
なので、イベント機能を使って、メール返信を自動化してみました。

プログラムコード

controller.php
<?php
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.");
            }
        });
    }
}

自動返信メールの内容の編集

ver.0.7では、controller.phpのon_start()メソッドを編集する。
利用者が多くなれば、管理画面から返信内容を設定できるように改良する予定。

活用事例

自動計算フォーム:運営会社

マイ見積:問い合わせ

githubで公開、MITライセンス

githubリポジトリはこちら

0
0
1

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
0
0