我尝试使用php mail((函数从localhost向我的yahoo电子邮件帐户发送电子邮件,返回显示我已成功发送电子邮件,但没有收到任何电子邮件。我一直在阅读并尝试许多所谓的"简单方式"来发送电子邮件,但结果令人失望,它们都不适合我。以下是代码、配置和错误消息。有人可以启发我吗?谢谢。
PHP代码
<?php
$to = 'myemail@yahoo.com';
$subject = 'Fake sendmail test';
$message = 'If we can read this, it means that our fake Sendmail setup works!';
$headers = 'From: myemail@egmail.com' . "rn" .
'Reply-To: myemail@gmail.com' . "rn" .
'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 = myemail@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t">
发送邮件的配置.ini
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=TLS
error_logfile=错误.log
debug_logfile=调试.log
auth_username=myemail@gmail.com auth_password=我的密码
force_sender=myemail@gmail.com
带有端口 587 的 Sendmail 错误日志中的错误消息
13/10/02 13:36:41:必须首先发出 STARTTLS 命令。 K4sm129639PBD.11 - GSMTP
这是给我答案的链接:
[安装]"Windows的假发送邮件"。如果您不使用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:xamppsendmailsendmail.exe -t"
(忽略"仅Unix"位,因为我们实际上使用的是sendmail(
然后,您必须在安装 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
要访问受两因素验证保护的 Gmail 帐户,您需要创建应用专用密码。(来源(
php.ini文件中,取消注释这个
sendmail_path = ""C:xamppsendmailsendmail.exe" -t"
;sendmail_path="C:xamppmailtodiskmailtodisk.exe"
并在发送邮件中.ini
smtp_server=smtp.gmail.com
smtp_port=465
error_logfile=error.log
debug_logfile=debug.log
auth_username=your@gmail.com
auth_password=yourpassword
force_sender=your@gmail.com
hostname=localhost
配置这个..它会工作...它对我来说工作正常。
谢谢。
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=myemail@gmail.com
auth_password=gmailpassword
force_sender=myemail@gmail.com
需要验证邮件的用户名和密码,然后只有一次可以从本地主机成功发送邮件
不要忘记为您的Gmail帐户生成第二个密码。您将在代码中使用此新密码。阅读以下内容:
https://support.google.com/accounts/answer/185833
在"如何生成应用密码"部分下,单击"应用密码",然后在"选择应用"下选择"邮件",选择您的设备并单击"生成"。您的第二个密码将打印在屏幕上。
最简单的方法是使用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中从本地主机发送电子邮件