Php mail()関数を使用して、localhostからyahooメールアカウントにメールを送信しようとしましたが、戻り値は、メールを正常に送信しましたが、メールを取得できなかったことを示しています。私は電子メールを送信するための「シンプルな方法」と呼ばれる多くの方法を読んで試してきましたが、結果は期待を裏切るものであり、どれも私にとってはうまくいきません。以下は、コード、構成、およびエラーメッセージです。誰かがこれで私を啓発できますか?ありがとう。
pHPコード
<?php
$to = '[email protected]';
$subject = 'Fake sendmail test';
$message = 'If we can read this, it means that our fake Sendmail setup works!';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers)) {
echo 'Email sent successfully!';
} else {
die('Failure: Email was not sent!');
}
?>
Php.iniの構成(Gmailメールサーバーを使用しています)
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = [email protected]
sendmail_path = "\" C:\ xampp\sendmail\sendmail.exe\"-t"
Sendmail.iniの構成
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_ssl = tls
error_logfile = error.log
debug_logfile = debug.log
[email protected]
auth_password = mypassword
[email protected]
ポート587のsendmailエラーログのエラーメッセージ
13/10/02 13:36:41:最初にSTARTTLSコマンドを発行する必要があります。 k4sm129639pbd.11-gsmtp
ここにあります 私に答えを与えるリンク:
[インストール]「 Windows用の偽のsendmail 」。 XAMPPを使用していない場合は、ここからダウンロードできます。 http://glob.com.au/sendmail/sendmail.Zip
[Modify] the php.ini file to use it (commented out the other lines): [mail function] ; For Win32 only. ; SMTP = smtp.gmail.com ; smtp_port = 25 ; For Win32 only. ; sendmail_from = <e-mail username>@gmail.com ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
(実際にsendmailを使用しているため、「Unix only」ビットは無視してください)
次に、sendmailがインストールされたディレクトリで「sendmail.ini」ファイルを設定する必要があります。
[sendmail] smtp_server=smtp.gmail.com smtp_port=25 error_logfile=error.log debug_logfile=debug.log auth_username=<username> auth_password=<password> force_sender=<e-mail username>@gmail.com
2要素認証で保護されたGmailアカウントにアクセスするには、 アプリケーション固有のパスワード を作成する必要があります。 ( ソース )
php.iniファイルで、このコメントを外します
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
およびsendmail.iniで
smtp_server=smtp.gmail.com
smtp_port=465
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=yourpassword
[email protected]
hostname=localhost
これを設定します..それは動作します...それは私のためにうまく機能しています。
ありがとう。
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=gmailpassword
[email protected]
メールのユーザー名とパスワードの認証が必要な場合、ローカルホストからメールを正常に送信できるのは一度だけです
Gmailアカウントの2番目のパスワードを生成することを忘れないでください。この新しいパスワードをコードで使用します。これを読む:
https://support.google.com/accounts/answer/1858
[アプリパスワードの生成方法]セクションで[アプリパスワード]をクリックし、[アプリの選択]で[メール]を選択し、デバイスを選択して[生成]をクリックします。 2番目のパスワードが画面に印刷されます。
最も簡単な方法は、PHPMailerとGmail SMTPを使用することです。設定は次のようになります。
require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'Email Address';
$mail->Password = 'Email Account Password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
サンプルスクリプトと完全なソースコードは、ここから入手できます- PHPでLocalhostからメールを送信する方法