テクノロジー

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

mizuno's icon'
  • mizuno
  • 2019/03/26 10:13
Content image

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アドレスへ返信をチェックするようにしてください。

Content image

こうすると、ホームページ訪問者が問い合わせフォームで入力したメールアドレスに、自動返信メールを送信します。こちらのページ「会社概要 | 自動計算サイト」で使用しています。

オープンソースで公開

このプログラムは、オープンソース(MITライセンス)で公開していますので、無料でご利用いただけます。ウェブ制作会社などでクライアントワークに使うなどの商用利用にもご利用いただけます。

 

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

 

Article tip 0人がサポートしています
獲得ALIS: Article like 23.08 ALIS Article tip 0.00 ALIS
mizuno's icon'
  • mizuno
  • @mizuno
月70万PVウェブメディア「計算フォーム」 https://calculator.jp/ でウェブ集客支援。書籍「WordPressユーザーのためのPHP入門」他一冊。TWITTER: @ounziw

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
テクノロジー

オープンソースプロジェクトに参加して自己肯定感を高める

Like token Tip token
85.05 ALIS
Eye catch
ゲーム

ドラクエで学ぶオーバフロー

Like token Tip token
30.10 ALIS
Eye catch
テクノロジー

彼女でも分かるように解説:ディープフェイク

Like token Tip token
32.10 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS
Eye catch
テクノロジー

なぜ、素人エンジニアの私が60日間でブロックチェーンゲームを制作できたのか、について語ってみた

Like token Tip token
270.93 ALIS
Eye catch
クリプト

ブロックチェーンの51%攻撃ってなに

Like token Tip token
0.00 ALIS
Eye catch
他カテゴリ

ALISのシステム概観

Like token Tip token
5.00 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
120.79 ALIS