wordpressで自作のお問合せフォームを作成/メール送信
さくらサーバーを用いてwordpressで自作のお問合せフォームを作成しているのですが、ajaxの通信でエラーが出てしまいます
発生している問題・エラーメッセージ
/wp/wp-content/themes/JM/sendmail.php:1 Failed to load the server responded with a status of 500 ()
該当のソースコード
sendmail.php
php
1<?php 2ini_set('display_errors',1); 3header('Content-type: application/json'); 4date_default_timezone_set('Asia/Tokyo'); 5 6// 送信先メールアドレス 7$to = '';//メールアドレス入れています 8// メールタイトル 9$subject = 'お問い合わせフォームより'; 10// ドメイン(リファラチェックと送信元メールアドレスに利用) 11$domain = '';//さくらサーバーで取得したドメイン入れています 12 13//変数初期化 14$errflg =0; // エラー判定フラグ 15$dispmsg =''; // 画面出力内容 16 17// 入力項目 18$name = ''; // 名前 19$email = ''; // メールアドレス 20$tel = ''; // 電話番号 21$time = ''; // 希望時間 22$text = ''; // 内容 23$referrer = ''; // 遷移元画面 24var_dump($emai) 25var_dump($name) 26var_dump($text) 27// 画面からのデータを取得 28if(isset($_POST['name'])){ $name = $_POST['name']; } 29if(isset($_POST['email'])){ $email = $_POST['email']; } 30if(isset($_POST['tel'])){ $tel = $_POST['tel']; } 31if(isset($_POST['time'])){ $tel = $_POST['time']; } 32if(isset($_POST['text'])){ $message = $_POST['text']; } 33if(isset($_POST['referrer'])){ $referrer = $_POST['referrer']; } 34 35if(strpos($_SERVER['HTTP_REFERER'], $domain) === false){ 36 // リファラチェック 37 $dispmsg = '<p id="errmsg">【リファラチェックエラー】お問い合わせフォームから入力されなかったため、メール送信できませんでした。</p>'; 38 $errflg = 1; 39} 40else if($name == '' || $email == '' || $text == ''){ 41 //必須チェック 42 $dispmsg = '<p id="errmsg">【エラー】名前・メールアドレス・内容は必須項目です。</p>'; 43 $errflg = 1; 44} 45else if(!preg_match("/^[.!#%&\-_0-9a-zA-Z?/+]+\@[!#%&\-_0-9a-z]+(.[!#%&\-_0-9a-z]+)+$/", $email) || count( explode('@',$email) ) !=2){ 46 //メールアドレスチェック 47 $dispmsg .= '<p id="errmsg">【エラー】メールアドレスの形式が正しくありません。</p>'; 48 $errflg = 1; 49} 50else{ 51 // メールデータ作成 52 $subject = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($subject,'JIS','UTF-8'))."?="; 53 $message= '名前:'.$name."\n"; 54 $message.='メール:'.$email."\n"; 55 $message.='電話番号:'.$tel."\n"; 56 $message.='希望時間:'.$time."\n"; 57 $message.="\n――――――――――――――――――――――――――――――\n\n"; 58 $message.=$text; 59 $message.="\n\n――――――――――――――――――――――――――――――\n"; 60 $message.='送信日時:'.date( "Y/m/d (D) H:i:s", time() )."\n"; 61 $message= mb_convert_encoding($message,'JIS','UTF-8'); 62 $fromName = mb_encode_mimeheader(mb_convert_encoding($name,'JIS','UTF-8')); 63 $header ='From: '.$fromName.'<wordpress@'.$domain.'>'."\n"; 64 $header.='Reply-To: '.$email."\n"; 65 $header.='Content-Type:text/plain;charset=iso-2022-jp\nX-Mailer: PHP/'.phpversion(); 66 // メール送信 67 $retmail = mb_send_mail($to,$subject,$message,$header); 68 69 // 送信結果の判定 70 if( $retmail ){ 71 $dispmsg ='<p class="success">メールを送信しました。返信までしばらくお待ちください。</p>'; 72 $dispmsg.='<blockquote><p>名前: '.hsc_utf8($name).'<br />'; 73 $dispmsg.= 'メール: '.hsc_utf8($email).'<br />'; 74 $dispmsg.= '電話番号: '.hsc_utf8($tel).'</p>'; 75 $dispmsg.= '希望時間: '.hsc_utf8($time).'</p>'; 76 $dispmsg.= '<pre>'.hsc_utf8($text).'</pre></blockquote>'; 77 }else{ 78 $dispmsg .= '<p id="errmsg">【エラー】メール送信に失敗しました。。</p>'; 79 $errflg = 1; 80 } 81} 82 83// 処理結果を画面に戻す 84$result = array('errflg'=>$errflg, 'dispmsg'=>$dispmsg); 85echo json_encode( $result ); 86 87// HTMLエスケープ処理 88function hsc_utf8($str) { 89 return htmlspecialchars($str, ENT_QUOTES,'UTF-8'); 90} 91?>
page-send.php
php
1<html lang="ja"> 2<body> 3<div id="form"> 4 5<div class="fish" id="fish"></div> 6<div class="fish" id="fish2"></div> 7 8<form id="waterform" method="post"> 9 10<div class="formgroup" id="name-form"> 11 <label for="name">お名前(必須)</label> 12 <input type="text" id="name" name="name" required/> 13</div> 14 15<div class="formgroup" id="email-form"> 16 <label for="email">メールアドレス</label> 17 <input type="email" id="email" name="email" required/> 18</div> 19 20<div class="formgroup" id="tel-form"> 21 <label for="tel">電話番号(必須)</label> 22 <input type="text" id="tel" name="tel" required/> 23</div> 24 25<div class="formgroup" id="time-form"> 26 <label for="time">連絡可能な時間帯(必須)</label> 27 <input type="text" id="time" name="time" required/> 28</div> 29 30<div class="formgroup" id="text-form"> 31 <label for="text">お問合せ</label> 32 <textarea id="text" name="text" required></textarea> 33</div> 34 35 <input type="submit" value="確認" /><input 36 id="referrer" type="hidden" name="referrer" /> 37</form><div id="dispmsg"></div> 38 </div><?php wp_footer(); ?></body></div></html> 39 40<!-- JavaScript --> 41<div> 42<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 43 44<script> 45jQuery(function ($) { 46 $("#referrer").val(document.referrer); 47 $("#waterform").submit(function(){ 48 $.ajax({ 49 url : '/wp/wp-content/themes/JM/sendmail.php', 50 type: 'POST', 51 dataType: 'json', 52 data: $(this).serialize() 53 }) 54 .done( function(data){ 55 $("#dispmsg").empty(); 56 $("#dispmsg").html(data.dispmsg); 57 if(data.errflg != 1){ 58 $("#waterform").remove(); 59 } 60 }) 61 .fail( function(data){ 62 alert('メール送信に失敗しました'); 63 }) 64 return false; 65 }); 66}); 67</script></div>
試したこと
ini_set('display_errors',1);を加え、デベロッパーツールのnetworkでエラー原因のプレビューができないか試しましたが表示されず原因がいまいちわからなかったです。また、var_dump($emai)を加てエラーチェックを行おうとしたのですがこれも表示されず行き詰まっています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/04 17:12