前提・実現したいこと
お問い合わせフォームを作る過程で、
mb_send_mail()を使って、自分宛てと他の人宛てに同じ内容のメールを送りたいです。しかし判定はTRUEになるのですが、どちらにもメールが受信されませんでした。
(MAILAR DAMON...といったメールも届きません)
###この問題について考えたこと
メール送信がうまくいかないときに読む記事(そういう質問をされたときに読ませる記事)https://qiita.com/ShibuyaKosuke/items/309c0a7d969baf0ea8d1
を読んでみました。
思いつく原因
・自分がかいたプログラムにミスがある:自分でもどこが悪いのかわからない
・mb_send_mail()はTRUE→送信サーバーとは接続できたということ?
・MAILAR DEMONのメールが来てないので受信サーバーではじかれてる?
→送信先、送信元のメアドは実際に使えるもの。実在する。
→大量にメールは送っていない。
聞きたいこと
この問題について何らかのエラーログ等を見る方法があれば教えていただきたいです。
コード内に変な箇所やミスがあればご指摘いただけると嬉しいです。
よろしくお願いします。
PC:windows10
PHP:xamppでApacheだけを起動して使ってます。
発生している問題・エラーメッセージ
mb_send_mail()を使って、自分宛てと他の人宛てに同じ内容のメールを送ろうとしたところ、判定はTRUEになるのですが、どちらにもメールが受信されませんでした。 (MAILAR DAMON...といったメールも届きません)
該当のソースコード
PHP
1mailvalrs.php(phpファイルの名前、宛先bccと送信元のアドレスは同一です) 2<?php 3 4//メールの宛先bcc(管理者の送信先(仮)) 5define('mail_bcc','*******@yahoo.co.jp'); 6 7//bccメールの宛先の名前 8define('mail_bcc_name','管理者'); 9 10//送信元のアドレス(仮) 11define('mail_from','********@yahoo.co.jp'); 12 13//送信元の名前 14define('mail_from_name','お問い合わせフォーム'); 15 16//自動返信先 17define('mail_return_path','*******@yahoo.co.jp');
PHP
1complete.php(mailvars.phpの情報を読み込んで送信します。) 2<?php 3 declare(strict_types = 1); 4 session_start(); 5 6 7 include('htmlファイルの冒頭の文言を読み込みます'); 8 require('トークンの取得や確認などが書かれたファイルを読み込みます'); 9 require('common/mailvars.php'); 10 11 validateToken1(); 12 13 //POST形式で送られた値の確認 14 inputcheck($_POST); 15 16//入力フォームで入力した値を代入(すみません*で中身隠しました。) 17$name = ***; 18 $mail = *** ; 19 $tel = ***; 20 $subject =***; 21 $body = ***; 22 23//確認メールの内容を代入 24 $mail_body = 'お問い合わせフォームからのお問い合わせ' . "\n\n"; 25 $mail_body = date("2020年m月d日 H時i分") . "\n"; 26 $mail_body .='件名: ' .$subject; 27 $mail_body .="\n" .'氏名: ' .$name; 28 $mail_body .="\n" .'メールアドレス: ' .$mail; 29 $mail_body .="\n" .'電話番号: ' .$tel; 30 $mail_body .="\n" .'お問い合わせ内容: '.$body; 31//------以下、 32 //送信元の情報 33 $header_info = "From: " . mb_encode_mimeheader(mb_convert_encoding(mail_from_name,'ISO-2022-JP','UTF-8'),'ISO-2022-JP','B') ."<" . mail_from .">\n"; 34 35 //送信先(ユーザー様宛て) 36 $header_info .="To: " . mb_encode_mimeheader(mb_convert_encoding("ユーザー様",'ISO-2022-JP','UTF-8'),'ISO-2022-JP','B') . "<" . $mail .">\n"; 37 38 //送信先(管理者宛て) 39 $header_info .="BCc: " . mb_encode_mimeheader(mb_convert_encoding(mail_bcc_name,'ISO-2022-JP','UTF-8'),'ISO-2022-JP','B') . "<" . mail_bcc . ">\n"; 40 41$remail = mail_return_path; 42 43if(ini_get('safe_mode')){ 44 $mail_send = mb_send_mail($mail,$subject,$mail_body,$header_info); 45 } 46 else{ 47 $mail_send = mb_send_mail($mail,$subject,$mail_body,$header_info,'-f' .$remail); 48 } 49 ?> 50 51 <?php if($mail_send===TRUE) :?> 52 <h2>送信完了画面</h2> 53 <p>ありがとうございます。送信が完了しました。</p> 54 <p>登録していただいたメールアドレスに確認用メールを送信させていただきました。</p> 55 ---省略--- 56 <?php else:?> 57 <p>申し訳ありません。送信に失敗しました。</p> 58 <p>お手数ですが最初からやり直してください。</p> 59 <p>ご迷惑をおかけして申し訳ありません。</p> 60 <?php endif;?> 61 62<?php 63 include('common/footer.php'); 64 65 if (isset($_COOKIE["PHPSESSID"])) { 66 setcookie("PHPSESSID", '', time() - 1800, '/'); 67 } 68 69 $_SESSION = array(); 70 session_destroy();
試したこと
xamppの中のphp.iniは以下のように設定しました。
[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25 設定したところ
--省略--
sendmail_path ="C:\xammp7\sendmail\sendmail.exe" -t" 設定したところ
mail.ini は以下のように設定しました。
;smtp_server=mail.mydomain.com
;smtp_server=smtp.gmail.com
smtp_server=smtp.mail.yahoo.co.jp
;smtp_port=25
smtp_port=587
;smtp_port=465
; smtp port (normally 25)auth_username=*******
auth_password=パスワードを入れています。
補足情報(FW/ツールのバージョンなど)
PC:windows10
PHP:xamppでApacheだけを起動して使ってます
回答1件
あなたの回答
tips
プレビュー