SOY Inquiryから自動送信されるメールのお問い合わせ内容の表示の修正
2015.06.08
昨日、下記の様なお問い合わせがありました。
/**************************************/
メール本文に問い合わせ内容が挿入される際に、項目名と入力内容がタブとコロンで区切られているため、環境によっては(特にスマホ)では読みづらくなっています。
現状自動送信されるメールと整形案を添付しますが、整形案のように項目名の頭に『■』を付加し、項目名の後で改行、入力内容と次の項目名の間には1行挿入したいです。
/**************************************/
今回はSOY Inquiryの自動送信メールの本文内容の拡張についての方法を紹介します。
SOY Inquiryから出力されるフォームのHTMLはシステム側から出力され、他のページの様にHTMLを自由に変更する為には、カスタマイズ用のフォームを用意する必要があります。
SOY Inquiry1.1.4でフォームのカスタマイズ用のファイルを同梱しました
カスタマイズのサンプルとして、
_sampleというフォームを用意しているのですが、
この中にあるmail.admin.phpとmail.user.phpでは自動送信時に出力されるメール文面のカスタマイズを行うことができます。
mail.admin.phpは管理者向けの自動送信メールで
mail.user.phpはお問い合わせした方への自動送信メールで、
今回はmail.user.phpを変更してみたいと思います。
確認メール設定でお問い合わせ内容を出力するにチェックを入れた状態で、
フォームからお問い合わせをしてみると
まめくらまめぞう様 今回は○○にお問い合わせありがとうござます。 近日中に返答いたします。 問い合わせ番号: 1-5332-9471 問い合わせ日時: 2015-06-08 11:39:18 お名前 : まめくらまめぞう メールアドレス: mamekura@omameshoji.com 件名 : テスト 問い合わせ内容: テストのお問い合わせ 株式会社○○ TEL:XXX-XXX-XXX
上記の内容でメールが送信されます。
ここで、冒頭の文と末尾の署名は管理画面で変更することができますが、
問い合わせ番号から問い合わせの内容は管理画面で変更することはできません。
ここで、mail.user.phpを編集して、メール文面を変更してみます。
mail.user.phpで
<?php /** * 使用できる変数 * $columns 各フォームのオブジェクト(入力内容も含む) * $this->form フォームの設定 * $inquiryMailBody 出力されたお問い合わせ内容 * * 拡張方法 * echo "追加したい文字列";でメールのコンテンツ末尾に追加されます。 * $mailBody[1]の値を上書きすると出力内容が変わります。 */ var_dump($mailBody[1]);exit; ?>
$mailBody[1]をダンプしてみると、
string(241) "問い合わせ番号: 1-1772-3679 問い合わせ日時: 2015-06-08 11:43:38 お名前 : まめくらまめぞう メールアドレス: mamekura@omameshoji.com 件名 : テスト 問い合わせ内容: テストのお問い合わせ"
上記の様に改行込のテキストになっています。
<?php $array = explode("\n", $mailBody[1]); $body = ""; foreach($array as $value){ $body .= str_replace(": ", "\n", $value); $body .= "\n\n"; //改行を二回入れておく } var_dump($body); ?>
ここで文字列を改行区切りで配列にし、:を改行にするという処理を追加することで、
string(236) "問い合わせ番号 1-6113-5320 問い合わせ日時 2015-06-08 11:50:39 お名前 まめくらまめぞう メールアドレス mamekura@omameshoji.com 件名 テスト 問い合わせ内容 テストの注文です "
これでシステムからの出力された文面は修正されました。
後は適宜整形した後、
<?php /** * 使用できる変数 * $columns 各フォームのオブジェクト(入力内容も含む) * $this->form フォームの設定 * $inquiryMailBody 出力されたお問い合わせ内容 * * 拡張方法 * echo "追加したい文字列";でメールのコンテンツ末尾に追加されます。 * $mailBody[1]の値を上書きすると出力内容が変わります。 */ $array = explode("\n", $mailBody[1]); $body = ""; foreach($array as $value){ $body .= "■" . str_replace(": ", "\n", $value); $body .= "\n\n"; //改行を二回入れておく } $mailBody[1] = trim($body); //出力文面を上書き ?>
$mailBody[1]に整形したメール文面を上書きすれば自動送信のメール文面のカスタマイズは終了です。
それでは、修正後に再度お問い合わせをしてみましょう。
まめくらまめぞう様 今回は○○にお問い合わせありがとうござます。 近日中に返答いたします。 ■問い合わせ番号 1-2777-5721 ■問い合わせ日時 2015-06-08 11:55:32 ■お名前 まめくらまめぞう ■メールアドレス mamekura@omameshoji.com ■件名 テスト ■問い合わせ内容 テストのお問い合わせ 株式会社○○ TEL:XXX-XXX-XXX 住所:東京都千代田区
上記の様な文面になっていればカスタマイズは終了です。
mail.admin.phpの修正もほぼ同じです。