concrete5のフォームブロックには、自動返信機能が無い!
concrete5のフォームブロックにはフォームを送信してくれた人に対する自動返信の機能が付いていません。
企業サイトでは自動返信をお客様に対して送信ほしい。という事をよく言われるので自動応答出来ないとちょっと困りますよね。
アドオンや外部フォームを使うなどの実現方法もありますが、わりと簡単に自動返信機能のカスタマイズは行なえますので、その方法をご紹介します。
自動返信メールの設定手順
以下の流れで自動返信機能を追加します。コピペで出来ると思うので、怖がらずにチャレンジしてみてくださいね。
- フォームブロックを使ってフォームを作る
- 自動返信メールの雛形を作成する
- フォームブロックに自動返信処理を追加する
1. フォームブロックを使ってフォームを作る
普通にフォームブロックを使ってフォームを作りますが、メールアドレスフィールドの設定を忘れないようにしましょう!
1-1. メールアドレスフィールドを追加して、【このEmailアドレスへ返信 】にチェックを入れる
このアドレスに自動返信することになります。もちろん必須入力にすることをお忘れなく。
補足:サイト管理者へのフォーム送信通知メールの設定も忘れないように
フォームの送信があった時に、サイト管理者へメールで通知出来るように以下の設定も忘れないようにしましょうね。意外と忘れがちなので。
2. 返信メールの本文を作成する
ココからは、concrete5のapplicationフォルダに必要なファイルを追加していきます。
GitHubにサンプルファイルを置いたので、まずは以下からダウンロード下さい。
GitHubから雛形をダウンロードする
以下に自動返信処理の雛形を置いたのでダウンロードしてきて下さい。
利用するのはapplicationフォルダ配下のみです。
https://github.com/onocom/concrete5-formblock-auto-reply-skeleton
2.自動返信メールの雛形を作成する
GitHubからダウンロードしたファイルの中から以下のファイルを開きます。
/application/mail/block_form_auto_reply.php
このファイルが自動返信メールで利用されるメールテンプレートになります。
開いたら、以下部分の冒頭文・署名を好きな文言に書き換えます。
1 2 3 4 5 6 7 8 9 10 | $body = t(" ホームページからのお問い合わせありがとうございます。 以下の内容で承りました。 %s ────────────────────────────────────────── サンプル株式会社 http://example.com/ 住 所:愛知県名古屋市 電話番号:XXX-XXX-XXXX ", $submittedData); |
3.フォームブロックに自動返信処理を追加する
次は、自動返信処理を追加していきます。
と言っても、先ほどGitHubよりダウンロードしたPHPファイルに送信処理は記述しておいたので、送信元メールアドレスや、送信者名、メールの件名等のパラメータを変更してあげるだけで良いかと思います。
GitHubからダウンロードしたファイルの中から以下のファイルを開きます。
/application/blocks/form/controller.php
580行目あたりから始まる以下の部分を書き換えていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // --------------------------------------------------------------- // 自動返信処理 Auto Reply // --------------------------------------------------------------- // --------- 編集が必要なのはココから $myFromName = "山田 太郎"; // 送信者名 $myFromAddress = "myaddress@example.com"; // 送信者メールアドレス $myMailTitle = "お問い合わせありがとうございます"; // メールの件名 $myMailTemplate = "block_form_auto_reply"; // メールのテンプレート名 // --------- 編集が必要なのはココまで $mh = Core::make('helper/mail'); $mh->to($replyToEmailAddress); $mh->from($myFromAddress,$myFromName); $mh->addParameter('questionAnswerPairs', $questionAnswerPairs); $mh->load($myMailTemplate); $mh->setSubject($myMailTitle); @$mh->sendMail(); // --------------------------------------------------------------- // / 自動返信処理 Auto Reply // --------------------------------------------------------------- |
コメントにあるとおり、送信者名($myFromName)・送信者のメールアドレス($myFromAddress)・メールの件名($myMailTitle)を書き換えます。
メールのテンプレート名($myMailTemplate)は基本的にこのままで大丈夫ですが、オリジナルのメールテンプレートを利用したい場合は、ここにそのテンプレート名を設定します。
4. ファイルをアップロードしよう
編集が終わったら編集を行った以下の2ファイルをサーバ上の同じディレクトリにアップします。
mailディレクトリやblocksディレクトリ、formディレクトリが存在しない場合は、作成します。必ず、このパスになるようにファイルを配置しましょう。
/application/mail/block_form_auto_reply.php
/application/blocks/form/controller.php
※ もし上記ファイルが既に存在している場合、ファイル比較ソフトを利用するなどして慎重にマージして下さい。
これで多分おそらく、フォームに自動返信機能が付加されているはずです。
試しに送信することをお勧めします。
まとめ
まだまだ改善の余地はありますが、少しばかりの道筋は示せたかと思います。
このカスタマイズ方法がご参考になれば幸いです。
改善の余地
必要な関数のみオーバーライドしたほうがメンテナンス性高そう。
複数フォームが設置されている場合のことをもう少し考慮したほうが良い。
concrete5 Version8が出てるけど動くかは検証出来ていない。
動作確認環境
concrete5 Version – 5.7.5.13