状況
phpでお問い合わせFormを作成しました。
XFreeのサーバで動作確認をし、メールが自動返信されることを確認しました。
しかし、本番環境であるXserverではメール返信が動作しません。
(mb_send_mailが動作しない)
XFreeの方では動いたのでプログラムの大枠は正しいはずですが、その他動作に必要な点をご教示していただきたいです。
試したこと
自分の管理下にないXserverで動かなかったため、自分でもXserverを契約し無料プランで以下を試しました
・formに入力するアドレスをgmailと~co.jpのアドレスで試したが両方ダメ
・mb_send_mail()をmail()に変えて動作確認(mail()以外は変更なし)
・php.iniのport番号を25→465や587にかえる
調べた結果、PHPMailerなどライブラリを使えば動作する可能性があるとありました。
しかし、現在自分には本番環境のFTP接続権限しかなくSMTPのパスワードがわからないため、できればmb_send_mailで対応したいです。
以下、ソースコードです。
$isSend=Trueにならないことまで確認しています。($isSendによりhtml表示を変えているため)
アドバイスいただけると助かります。
PHP Version 7.4.25
send.php
1<?php 2session_start(); 3if (!$_SESSION) { 4 header('Location: ./index.php'); 5} 6 7//空の場合のエラーメッセージ制御 8error_reporting(E_ALL ^ E_NOTICE); 9 10//メール差出人 11$sender = "株式会社〇〇"; 12 13//メール送信元 14$mailFrom = "mail1@***.com"; 15 16//メール返信先 17$replyTo = "mail1@***.com"; 18 19//管理者メールアドレス 20$adminEmail = "mail2@***.com"; 21 22//メールヘッダ設定 23$addHeader = "From:" . mb_encode_mimeheader($sender) . "<" . $mailFrom . ">\n"; 24$addHeader .= "Reply-to: " . $replyTo . "\n"; 25$addHeader .= "X-Mailer: PHP/" . phpversion(); 26 27// 迷惑メール対策 28$addOption = '-f' . $mailFrom; 29 30//タイムスタンプ 31date_default_timezone_set('Asia/Tokyo'); 32$timeStamp = time(); 33$week = array('日', '月', '火', '水', '木', '金', '土'); 34$dateFormatYMD = date('Y年m月d日', $timeStamp); 35$dateFormatHIS = date('H時i分s秒', $timeStamp); 36$weekFormat = "(" . $week[date('w', $timeStamp)] . ")"; 37$outputDate = $dateFormatYMD . $weekFormat . $dateFormatHIS; 38 39//XSS対策用サニタイズ 40function h($str) 41{ 42 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 43} 44 45//メール本文内に表示するデータの変数化 46$company = h($_SESSION['input_company']); 47$name = h($_SESSION['input_name']); 48$email = h($_SESSION['input_email']); 49$tel = h($_SESSION['input_tel']); 50$textarea = h($_SESSION['input_textarea']); 51 52//自動返信メール本文 53$messageUser = <<< EOD 54お問い合わせありがとうございます。 55EOD; 56 57//管理者確認用メール本文 58$messageAdmin = <<< EOD 59お問い合わせがありました 60EOD; 61 62//メール共通送信設定 63mb_language("ja"); 64mb_internal_encoding("UTF-8"); 65 66if (!empty($_SESSION['input_email'])) { 67 68 //自動返信メール送信設定 69 mb_send_mail($_SESSION['input_email'], "お問い合わせありがとうございます", $messageUser, $addHeader, $addOption); 70 71 // 管理者確認用メール送信設定 72 mb_send_mail($adminEmail, "お問い合わせ:" . $outputDate, $messageAdmin, $addHeader, $addOption); 73 74 $isSend = true; 75} else { 76 $isSend = false; 77} 78 79session_destroy(); 80?> 81

回答2件
あなたの回答
tips
プレビュー