※ ChatGPTを利用し、要約された質問です(原文:php メールフォーム SMTP メールサーバー)
SMTPメールサーバーの設定でつまってしまった質問
このQ&Aのポイント
PHPのメールフォームでSMTPメールサーバーの設定で問題が発生しています。具体的には、外部サーバーでYahooまたはGmailを使用しようとしていますが、メールが受信または送信されません。設定ファイルの変更やメールソフトの使用についても調査しましたが、解決策が見つかりませんでした。
試したこととして、ポート番号を587に変更し、php.iniファイルの設定を修正しましたが、問題は解決しませんでした。また、メールソフトの使用やPEAR:Mailの導入についても情報を収集しましたが、基本的な知識が不足しており、正しい手順がわかりません。
調査中に見つけた情報では、メール送信に関連して、SMTP認証やSecure SMTP(SSL/TLS)の設定が必要な場合があるかもしれません。ただし、具体的な手順や設定方法についてはわかりません。解決策を教えていただけると助かります。
環境は、 windows7 32bit・ XAMPP version1.8.1(Apache MySQL) です。.
phpを、 「PHP プログラミングの教科書」 にて、勉強中のものですが、『3-2 メールフォーム』のメールサーバーの設定で、つまってしまいました。
外部メールサーバーを、SMTPに指定して、メールを受け取るプログラムです。
外部サーバーに、 Yahoo(またはGmail ) を利用しようとして、つまっています。
「PHP プログラミングの教科書」の説明では、PHP設定ファイル(php.ini)のメール設定で、
デフォルトで、
---------------------------
SMTP = localhost
smtp_port = 25
---------------------------
の部分を、 ↓
---------------------------
SMTP = xxxxx.xxxxx.com(メールサーバー)
smtp_port = 25
username = xxxxx
password = xxxxx
---------------------------
と、変更・追加すれば、よいとのことで、
SMTP = smtp.mail.yahoo.co.jp
smtp_port = 25
username = yahooのID
password = yahooのパスワード
と設定しました。
phpのファイルにアクセスすると、文字の入力から、送信までのページ進行には、問題ないのですが、メールが受信(または送信)されません。メール送信は、mb_send_mail関数を使用してます。ヤフーデリバーというものに、登録して、ヤフーのサーバーの情報などを確認しました。
メールソフト(outlook,thunderbirdなど)は、必要なのでしょうか?書籍にはなんの記述もないので、できるのかとおもってるのですが、ネットで調べると、Gmailと、メールソフトと、PEAR:Mailで、メールを送信する。という記述が多いのですが、基本的なことを把握してないと思いますので、ご指摘いただけたらと思います。よろしくお願いいたします。ヤフー
以下、phpのコードです。
<?php
//サニタイズ関数の定義
function hsc($a){
return htmlspecialchars($a, ENT_QUOTES ,"UTF-8");
}
$uname = hsc($_SESSION["uname"]);
$email =hsc($_SESSION["email"]);
$message =hsc($_SESSION["message"]);
// メール本文の組み立て
$to = "yahooの自分のアドレス";
$title ="【メールフォームより】";
$ext_header ="From : {$email}";
//本文を組み立てるヒヤドキュメント
$body = <<<EOM
---------------------------------------------------------------------
【webサイトからのメール】
お名前:{$uname}
メールアドレス:{$email}
メッセージ:{$message}
---------------------------------------------------------------------
EOM;
//メール送信の実行
$rc = mb_send_mail($to, $title, $body, $ext_header);
if(!$rc){
exit;
}else{
$_SESSION = NULL;
}
?>
試したことは、
・ポート番号を、587に変更する。
・php.iniのSMTPなどの前に、「;」があったので、それを削除した。
お礼
回答ありがとうござます。 yahooだとできないようで、gmailで試してみたいと思います。 ありがとうございました!