phpmailer 似乎不适用于 gmail

phpmailer seems not working with gmail

当我尝试使用 phpmailer 和 gmail stp 发送电子邮件时,似乎无法正常工作。我已经测试了所有提出的解决方案,但仍然是这个问题:

2017-01-27 19:29:33 Invalid address:  (addAnAddress Reply-To): jgh
2017-01-27 19:29:33 SERVER -> CLIENT: 220-khadija.genious.net ESMTP Exim 4.87 #1 Fri, 27 Jan 2017 19
:29:33 +0000 
                                      220-We do not authorize the use of this system to transport unsolicited
, 
                                      220 and/or bulk e-mail.
2017-01-27 19:29:33 CLIENT -> SERVER: EHLO www.mywebsite.ma
2017-01-27 19:29:33 SERVER -> CLIENT: 250-khadija.genious.net Hello khadija.genious.net [41.77.119.226
]
                                      250-SIZE 52428800
                                      250-8BITMIME
                                      250-PIPELINING
                                      250-AUTH PLAIN LOGIN
                                      250-STARTTLS
                                      250 HELP
2017-01-27 19:29:33 CLIENT -> SERVER: STARTTLS
2017-01-27 19:29:33 SERVER -> CLIENT: 220 TLS go ahead
2017-01-27 19:29:33 CLIENT -> SERVER: EHLO www.mywebsite.ma
2017-01-27 19:29:33 SERVER -> CLIENT: 250-khadija.genious.net Hello khadija.genious.net [41.77.119.226
]
                                      250-SIZE 52428800
                                      250-8BITMIME
                                      250-PIPELINING
                                      250-AUTH PLAIN LOGIN
                                      250 HELP
2017-01-27 19:29:33 CLIENT -> SERVER: AUTH LOGIN
2017-01-27 19:29:33 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2017-01-27 19:29:33 CLIENT -> SERVER: xxx==
2017-01-27 19:29:33 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2017-01-27 19:29:33 CLIENT -> SERVER: xxx
2017-01-27 19:29:35 SERVER -> CLIENT: 535 Incorrect authentication data
2017-01-27 19:29:35 SMTP ERROR: Password command failed: 535 Incorrect authentication data
2017-01-27 19:29:35 SMTP Error: Could not authenticate.
2017-01-27 19:29:35 CLIENT -> SERVER: QUIT
2017-01-27 19:29:35 SERVER -> CLIENT: 221 khadija.genious.net closing connection
2017-01-27 19:29:35 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

这是我的 php 页面:

require 'class.phpmailer.php';
require 'class.smtp.php';

header('Content-Type: application/json');

$mail = new PHPMailer;

$mail->IsSMTP();
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = "XXX@gmail.com";
$mail->Password = "XXX";

$email_recipient = 'XXX@gmail.com';

$mail->setFrom($email_recipient);
$mail->addAddress($email_recipient);  
$mail->addReplyTo($_POST['email']);

$mail->isHTML(true);

$mail->Subject = 'Subject';
$mail->Body    = "Message";

if(!$mail->send()) {
    echo json_encode(array('result' => false));
} else {
    echo json_encode(array('result' => true));
}

我已经启用了 lesssecureapps : https://www.google.com/settings/security/lesssecureapps

有什么想法吗?

谢谢

您的 ISP 正在将您的 SMTP 连接重定向到他们自己的邮件服务器。您要求连接到 smtp.gmail.com,但您最终连接到 khadija.genious.net,当然您的凭据在那里不起作用。

我猜你 运行 PHP 5.6 岁以上;这是一个很好的教训,说明为什么不验证 TLS 证书是一个坏主意 - 您实际上已经将 Gmail 凭据泄露给了 MITM 攻击者。这在故障排除指南中有所介绍。