現在、いただいたPHPを元にお問い合わせフォームを作ろうとしています。
入力して送信ボタンを押し、サンクスページへ移動するところまでは動作するのですが、送信先にメールが届かないで困っています。
<?php /* Template Name: 新規会員登録 */ session_set_cookie_params(0, '../'); // session許可範囲 session_start(); /* config */ mb_language("Ja"); mb_internal_encoding("UTF-8"); define('THANKS_URL', 'thanks'); error_reporting(E_ALL & ~E_NOTICE); // エラー表示 function h($s) { return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); } function setToken() { if (!isset($_SERVER['token'])) { $_SESSION['token'] = sha1(uniqid(mt_rand(), true)); } } function checkToken() { if (empty($_POST['token']) || $_POST['token'] != $_SESSION['token']) { echo "投稿が正しくないようです。"; exit; } } if ($_SERVER["REQUEST_METHOD"] != "POST") { setToken(); } else { checkToken(); $familyname01 = $_POST["familyname01"]; $firstname01 = $_POST["firstname01"]; $familyname02 = $_POST["familyname02"]; $firstname02 = $_POST["firstname02"]; $birthyear = $_POST["birthyear"]; $birthmonth = $_POST["birthmonth"]; $birthday = $_POST["birthday"]; $sex = $_POST["sex"]; $address = $_POST["address"]; $tel = $_POST["tel"]; $email = $_POST["email"]; $academic01 = $_POST["academic01"]; $academic02 = $_POST["academic02"]; $employment = $_POST["employment"]; $changing = $_POST["changing"]; $jobcategory01 = $_POST["jobcategory01"]; $jobcategorynumber01 = $_POST["jobcategorynumber01"]; $jobcategory02 = $_POST["jobcategory02"]; $jobcategorynumber02 = $_POST["jobcategorynumber02"]; $jobcategory03 = $_POST["jobcategory03"]; $jobcategorynumber03 = $_POST["jobcategorynumber03"]; $startyear = $_POST["startyear"]; $startmonth = $_POST["startmonth"]; $endyear = $_POST["endyear"]; $endmonth = $_POST["endmonth"]; $detail = $_POST["detail"]; $agreement = $_POST["agreement"]; $error = array(); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error["email"] = "メールアドレスの形式が正しくありません";} if ($email == "") { $error["email"] = "メールアドレスを入力してください";} if ($familyname01 == "") { $error["familyname01"] = "姓を入力してください";} if ($firstname01 == "") { $error["firstname01"] = "名を入力してください";} if ($familyname02 == "") { $error["familyname02"] = "セイを入力してください";} if ($firstname02 == "") { $error["firstname02"] = "メイを入力してください";} if ($birthyear == "") { $error["birthyear"] = "生年月日(年)を入力してください";} if ($birthmonth == "") { $error["birthmonth"] = "生年月日(月)を入力してください";} if ($birthday == "") { $error["birthday"] = "生年月日(日)を入力してください";} if ($sex == "") { $error["sex"] = "性別を入力してください";} if ($address == "") { $error["address"] = "現住所を入力してください";} if ($academic01 == "") { $error["academic01"] = "最終学歴を入力してください";} if ($academic02 == "") { $error["academic02"] = "卒業区分を入力してください";} if ($employment == "") { $error["employment"] = "現在の勤務状況を入力してください";} if ($changing == "") { $error["changing"] = "転職回数を入力してください";} if ($jobcategory01 == "") { $error["jobcategory01"] = "経験職種1を入力してください";} if ($jobcategorynumber01 == "") { $error["jobcategorynumber01"] = "経験職種1の勤務期間を入力してください";} if ($startyear == "") { $error["startyear"] = "直近の勤務期間(入社年)を入力してください";} if ($startmonth == "") { $error["startmonth"] = "直近の勤務期間(入社月)を入力してください";} if ($endyear == "") { $error["endyear"] = "直近の勤務期間(退社年)を入力してください";} if ($startmonth == "") { $error["endmonth"] = "直近の勤務期間(退社月)を入力してください";} if (mb_strlen($detail) > 400) { $error["detail"] = "希望条件は400文字以内で入力して下さい"; } if (empty($error)) { $header = "From: " .mb_encode_mimeheader("株式会社ほげほげ") ."<info@smartgate.jp>"; $body = 'お名前:'.$familyname01." ".$firstname01."\n". 'お名前(カナ):'.$familyname02." ".$firstname02."\n". '生年月日:'.$birthyear."年".$birthmonth."月".$birthday."日\n". '性別:'.$sex."\n". '現住所:'.$address."\n". '電話番号:'.$tel."\n". 'メールアドレス:'.$email."\n". '最終学歴:'.$academic01."\n". '卒業区分:'.$academic02."\n". '現在の勤務状況:'.$employment."\n". '転職回数:'.$changing."\n". '経験職種1:'.$jobcategory01." ".$jobcategorynumber01."年間\n". '経験職種2:'.$jobcategory02." ".$jobcategorynumber02."年間\n". '経験職種3:'.$jobcategory03." ".$jobcategorynumber03."年間\n". '直近の勤務期間:'.$startyear."年".$startmonth."月〜".$endyear."年".$endmonth."月\n". '希望条件:'.$detail; // 「送信」のとき if ( !mb_send_mail('hogehoge@gmail.com','件名', $body, $header) ) { throw e('メール送信でエラーが発生しました。', $e); } header('Location: '.THANKS_URL); exit; } } ?> <?php get_header(); ?> <article id="register"> <section class="main-content"> <div class="main-content-wrap"> <div class="bread"> <a href="/" class="prev-page">TOP</a> > <span class="current-page">新規会員登録</span> </div> <h1 class="head">会員登録をする</h1> <p class="text">求人への応募や各種サービスの<br class="sp-visibility">ご利用が可能となります。</p> <div class="reg-process"> <div class="reg-input">入力</div><i class="fas fa-angle-right"></i><div class="reg-end">完了</div> </div> <div class="reg-area"> <form method="POST" action=""> <h2 class="large-item">個人プロフィール</h2> ・ ・ ・ <h2 class="large-item">希望条件</h2> <dl class="form"> <dt><label for="detail">自由記入欄</label></dt> <dd><textarea name="detail" id="detail" cols="40" rows="5" placeholder=""></textarea></dd> </dl> <div class="agreement"> <input type="checkbox" name="agreement" id="agreement" value="yes" required> <label for="agreement"><a href="page-terms.php" target="blank">利用規約</a>・<a href="page-policy.php" target="blank">個人情報の取扱い</a>について同意する</label> </div> <input type="hidden" name="token" value="<?php echo h($_SESSION['token']); ?>"> <input class="reg-button" type="submit" value="登録する" id="submit"> </form> </div> </div> </section> </article> <script type="text/javascript"> $(function() { $.fn.autoKana('#familyname01', '#familyname02', {katakana:true}); $.fn.autoKana('#firstname01', '#firstname02', {katakana:true}); }); </script> <?php get_footer(); ?>
どこをどう修正すればメールが届くようになるかご教授いただけないでしょうか?
よろしくお願いいたします。
phpはどこで動かしてますか?
ローカルサーバー?Webサーバー?はたまた
Webのテスト用に作成したサーバーで動かしています。
SnapUpで作成したステージングサーバーです。
そのサーバーのOSとPHPのバージョン含めて質問本文に追記いただけますか?
throwするだけでcatchしているところが見受けられませんが、これは?
OSはWindows10で、PHPバージョンは7.3です
文字数制限があったため、一部省略しています。
Windows10?
ということはWebサーバーはXAMPPかなにかで立ち上げたということでしょうか。
あと原則質問本文に追記してください
すみません、パソコンのOSと勘違いしました。
snupupのOS情報はわかりませんでした。。。
申し訳ありません。
サーバーサイドの言語であればほとんどブラウザ操作するOSの話題になることはないかなと(ローカルPCにサーバーたててるなら別)
send_mailは宛先が正しいとかそういうところまでは確認しないので、存在するメールアドレスかとか、そのあたりから確認してみてもいいかもしれません
回答3件
あなたの回答
tips
プレビュー