運営側への自動返信メールに、問合せ側への自動返信メールを追記しました。
何度実装しても運営側にしかメールが送信されません。
問合せ側への自動返信メールを送信するにはどのように記述したら良いのでしょうか。
php
1<?php 2session_start(); 3 4//クリックジャッキング対策 5header('X-FRAME-OPTIONS: SAMEORIGIN'); 6 7// HTML特殊文字をエスケープする関数 8function escape($str) { 9 return htmlspecialchars($str,ENT_QUOTES,'UTF-8'); 10} 11 12//前後にある半角全角スペースを削除する関数 13function spaceTrim ($str) { 14 // 行頭 15 $str = preg_replace('/^[ ]+/u', '', $str); 16 // 末尾 17 $str = preg_replace('/[ ]+$/u', '', $str); 18 return $str; 19} 20 21//tokenを変数に入れる 22$token = $_POST['token']; 23 24// トークンを確認し、確認画面を表示 25if(!(hash_equals($token, $_SESSION['token']) && empty($token))) { 26 echo "不正アクセスの可能性があります"; 27 exit(); 28} 29?> 30<!DOCTYPE html> 31<html> 32<head> 33<meta charset="UTF-8"> 34<title>メール送信完了|メール送信フォーム</title> 35</head> 36<body> 37 38<?php 39/******************************* 40 データの受け取り 41*******************************/ 42$name = $_POST["name"]; //名前 43$furigana = $_POST["furigana"]; 44$email = $_POST["email"]; //メールアドレス 45$tel = $_POST["tel"]; 46$message = $_POST["message"]; //お問合せ内容 47 48//危険な文字列を入力された場合にそのまま利用しない対策 49$radio = htmlspecialchars($radio, ENT_QUOTES); 50$name = htmlspecialchars($name, ENT_QUOTES); 51$furigana = htmlspecialchars($furigana, ENT_QUOTES); 52$email = htmlspecialchars($email, ENT_QUOTES); 53$tel = htmlspecialchars($tel, ENT_QUOTES); 54$message = htmlspecialchars($message, ENT_QUOTES); 55 56/******************************* 57 未入力チェック 58*******************************/ 59$errmsg = ''; //エラーメッセージを空にしておく 60if ($name == '') { 61 $errmsg = $errmsg.'<p>名前が入力されていません。</p>'; 62} 63if ($furigana == '') { 64 $errmsg = $errmsg.'<p>フリガナが入力されていません。</p>'; 65} 66if ($email == '') { 67 $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; 68} 69if ($tel == '') { 70 $errmsg = $errmsg.'<p>電話番号が入力されていません。</p>'; 71} 72if ($message == '') { 73 $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; 74} 75 76/******************************* 77 メール送信の実行 78*******************************/ 79if ($errmsg != '') { 80 //エラーメッセージが空ではない場合には、[前のページへ戻る]ボタンを表示する 81 echo $errmsg; 82 83 //[前のページへ戻る]ボタンを表示する 84 echo '<form method="post" action="index.html">'; 85 echo '<input type="hidden" name="name" value="'.$name.'">'; 86 echo '<input type="hidden" name="name" value="'.$furigana.'">'; 87 echo '<input type="hidden" name="email" value="'.$email.'">'; 88 echo '<input type="hidden" name="name" value="'.$tel.'">'; 89 echo '<input type="hidden" name="message" value="'.$message.'">'; 90 echo '<input type="submit" name="backbtn" value="前のページへ戻る">'; 91 echo '</form>'; 92} else { 93 // ここから追記部分-------------------------------------------- 94 // 変数とタイムゾーンを初期化 95 $header = null; 96 $auto_reply_subject = null; 97 $auto_reply_text = null; 98 $admin_reply_subject = null; 99 $honbun = null; 100 date_default_timezone_set('Asia/Tokyo'); 101 102 // ヘッダー情報を設定 103 $header = "MIME-Version: 1.0\n"; 104 $header .= "From: SAMPLE <sample@gmail.com>\n"; 105 $header .= "Reply-To: SAMPLE <sample@gmail.com>\n"; 106 107 // 件名を設定 108 $auto_reply_subject = 'お問い合わせありがとうございます。'; 109 110 // 本文を設定 111 $auto_reply_text = "この度は、お問い合わせ頂き誠にありがとうございます。 112 下記の内容でお問い合わせを受け付けました。\n\n"; 113 $auto_reply_text .= "お問い合わせ日時:" . date("Y-m-d H:i") . "\n"; 114 $auto_reply_text .= "氏名:" . $_POST['name'] . "\n"; 115 $auto_reply_text .= "メールアドレス:" . $_POST['email'] . "\n\n"; 116 $auto_reply_text .= "SAMPLE 事務局"; 117 118 //メール送信処理 119 $mailsousin = mb_send_mail($_POST['email'], $auto_reply_subject, $auto_reply_text, $header,$parameter); 120 121 // 運営側へ送るメールの件名 122 $admin_reply_subject = "お問い合わせを受け付けました"; 123 // ここまで追記--------------------------------------- 124 125 //エラーメッセージが空の場合には、メール送信処理を実行する 126 //メール本文の作成 127 $honbun = ''; 128 $honbun .= "メールフォームよりお問い合わせがありました。\n\n"; 129 $honbun .= "【お名前】\n"; 130 $honbun .= $name."\n\n"; 131 $honbun .= "【フリガナ】\n"; 132 $honbun .= $furigana."\n\n"; 133 $honbun .= "【メールアドレス】\n"; 134 $honbun .= $email."\n\n"; 135 $honbun .= "【電話番号】\n"; 136 $honbun .= $tel."\n\n"; 137 $honbun .= "【お問い合わせ内容】\n"; 138 $honbun .= $message."\n\n"; 139 140 //エンコード処理 141 mb_language("Japanese"); 142 mb_internal_encoding("UTF-8"); 143 144 //メールの作成 145 $mail_to = "sample@gmail.com"; //送信先メールアドレス 146 $mail_subject = "メールフォームよりお問い合わせ"; //メールの件名 147 $mail_body = $honbun; //メールの本文 148 $mail_header = "from:".$email; //送信元として表示されるメールアドレス 149 $parameter="-f sample@gmail.com"; 150 151 //メール送信処理 152 $mailsousin = mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header,$parameter); 153 154 //メール送信結果 155 if($mailsousin == true) { 156 echo '<p>お問い合わせメールを送信しました。</p>'; 157 ?> 158 <script> 159 window.location = 'http://sample.ne.jp/sample/index.html'; 160 </script> 161 <?php 162 } else { 163 echo '<p>メール送信でエラーが発生しました。</p>'; 164 } 165} 166?> 167 168</body> 169</html>
現在の課題より気になる点のほうが多いのですが、それはスルーして良いものでしょうか。
https://qiita.com/vber_program/items/5f47dd59dcbd671aa17b
ご指摘いただきまして、ありがとうございます。
下記参考にしたものを追記しております。
https://qiita.com/vber_program/items/5f47dd59dcbd671aa17b
困難は、分割せよ、と言いたくなるなあ。 < ゴミコメント
これも本件とは別件なのでコメントで
・escape()は何のために用意したのでしょうか
・いずれにしてもHTMLのエスケープは画面出力時に行うものです
エンコーディングの設定がコードの後半の方で出てくるのも、ねぇ。php.iniで適切に設定してあれば不要なはずですし。なにかできない事情でもお有りなのでしょうか?