【PHPスキル強化】問い合わせフォームを作成してみよう その2

HTML
スポンサーリンク

こんにちは朱夏です。

前回の続きをやっていきます。
ここまでにできたものは以下になります。

  • フォームの入力ページ
  • 確認ページ
  • 完了ページ

入力したものを確認ページで確認、送信ボタン押下後に送信完了ページを表示するところまでです。
入力した値を確認ページで表示するのにname属性が必要だということが個人的なポイントでした。
そして、ボタン押下時にはvalue属性の値が入ります。

・入力した値はname属性で指定した名前の関数に入る
・ボタンを押下した場合は、value属性で指定した値が入る

 

今回は、実際に送信した時の動作を作っていきます。
具体的には、フォームで入力してもらったメールアドレスに対して受付た旨のメールを送信する事と、受付先へ問い合わせ内容を実際に送信する事の2つです。

・問い合わせ者へ受付メールを送信
・受付アドレスへ問い合わせメールを送信

 

それでは、順番にやっていきます。

受付メールを送信しよう

フォームに入力してもらったメールアドレスへ受け付けた旨のメールを送信します。
最初にメール送信のテストを行うための環境作りです。
現在MAMPを使用してローカルのテスト環境でコードを書いているので、ローカルからメール送信ができるようにするということですね。
こちらのサイトを参考にしました。

環境準備が出来たら、次はコードを書いていきます。
前回書いたコードに追記で、送信情報の部分を書きました。
追記したのはPHPのif文の中のみです。

 

<?php
// 入力確認部分をコメントアウト
// var_dump($_POST);

// 変数の初期化
$page_flag = 0;

if( !empty($_POST['btn_confirm']) ) {
   $page_flag = 1;
} elseif( !empty($_POST['btn_submit']) ) {
   $page_flag = 2;
   // メール送信
   // データ初期化
   $header = null;
   $auto_reply_subject = null;
   $auto_reply_text = null;
   date_default_timezone_set('Asia/Tokyo');

   // ヘッダー情報初期化
   $header = "MIME-Version: 1.0\n";
   $header = "From: <送信者のメールアドレス>\n";
   $header = "Reply-To: <返信先のメールアドレス>\n";

   // 件名
   $auto_reply_subject = 'お問い合わせありがとうございます。';

   // 本文
   $auto_reply_text = "お問い合わせいただき、ありがとうございます。下記の内容でお問い合わせを受け付けいたしました。(このメールは自動返信で送信しております。回答までしばらくお待ちください。)\n\n";
   $auto_reply_text .= "受付日時:" . date("Y-m-d H:i") . "\n";
   $auto_reply_text .= "お名前:" . $_POST['last_name'] . $_POST['firstname'] . "\n";
   $auto_reply_text .= "メールアドレス:" . $_POST['mailaddress'] . "\n\n";
   $auto_reply_text .= "お問い合わせ内容:" . $_POST['inquiry'] . "\n\n";
   $auto_reply_text .= "○○事務局";

   // 送信
   mb_send_mail( $_POST['mailaddress'], $auto_reply_subject, $auto_reply_text);
}

?>

 

MIMEとは、ASCII文字以外のデータを扱えるように拡張するためのものです。

 

相手への受付メール送信はこれで実装出来ました。
次に行きます。

問い合わせメールを受信しよう

次に、問い合わせメールを受け取れるようにします。
受付メール同様の送り方になりますが、送信先のメールアドレスに、自分が受信したいメールアドレスを指定します。
コードは以下の様に追記しました。

 

※2019/12/4 コードの間違いを修正しました
<?php
// 入力確認部分をコメントアウト
// var_dump($_POST);

// 変数の初期化
$page_flag = 0;

if( !empty($_POST['btn_confirm']) ) {
   $page_flag = 1;
} elseif( !empty($_POST['btn_submit']) ) {
   $page_flag = 2;
   // メール送信
   // データ初期化
   $header = null;
   $auto_reply_subject = null;
   $auto_reply_text = null;
   $admin_reply_subject = null;
   $admin_reply_text = null;
   date_default_timezone_set('Asia/Tokyo');

   // ヘッダー情報初期化
   $header = "MIME-Version: 1.0\n";
   $header = "From: <送信者のメールアドレス>\n";
   $header = "Reply-To: <返信先のメールアドレス>\n";

   // 件名
   $auto_reply_subject = 'お問い合わせありがとうございます。';

   // 本文
   $auto_reply_text = "お問い合わせいただき、ありがとうございます。下記の内容でお問い合わせを受け付けいたしました。(このメールは自動返信で送信しております。回答までしばらくお待ちください。)\n\n";
   $auto_reply_text .= "受付日時:" . date("Y-m-d H:i") . "\n";
   $auto_reply_text .= "お名前:" . $_POST['lastname'] . $_POST['firstname'] . "\n";
   $auto_reply_text .= "メールアドレス:" . $_POST['mailaddress'] . "\n\n";
   $auto_reply_text .= "お問い合わせ内容:" . $_POST['inquiry'] . "\n\n";
   $auto_reply_text .= "○○事務局";
   
   // 送信
   mb_send_mail( $_POST['mailaddress'], $auto_reply_subject, $auto_reply_text, $header);
   
   // 自分で受け取るメール
   // 件名
   $admin_reply_subject = "お問い合わせを受け付けました";
   
   // 本文
   $admin_reply_text = "お問い合わせを受信しました。\n\n";
   $admin_reply_text .= "受付日時:" . date("Y-m-d H:i") . "\n";
   $admin_reply_text .= "お名前:" . $_POST['lastname'] . $_POST['firstname'] . "\n";
   $admin_reply_text .= "生年月日:" . $_POST['barthday'] . "\n";
   $admin_reply_text .= "メールアドレス:" . $_POST['mailaddress'] . "\n";
   $admin_reply_text .= "住所:" . $_POST['addnum'] . $_POST['topaddress'] . $_POST['address'] . "\n\n";
   $admin_reply_text .= "お問い合わせ内容:" . $_POST['inquiry'] . "\n\n";
   $admin_reply_text .= "○○事務局";

   // メール送信
   mb_send_mail( '<受信したいメールアドレス>', $admin_reply_subject, $admin_reply_text, $header);
}

?>

 

これで、問い合わせメールを受信することが出来るようになりました。

まとめ

作業を終えた感想として、一番手間取ったのはコードを書くことではなく、メールを送信できるようにする環境作りでした。
メールの送信を行うにあたり、SMTPサーバをテスト環境で準備する、もしくは既存のメールサービスを使う場合は認証を通したり、Mailerを用意したりする必要がありました。

特にGmailの場合、2段階認証に対応していないデバイスからログイン可能にするためのパスワードを取得する必要があるなど、ハードルがとても高く感じました。

ローカルのテスト環境構築方法は、今後のために整理しておきたいと思います。

今回はここまでです。

タイトルとURLをコピーしました