通过PHPMailer发送SMTP电子邮件突然开始失败

时间:2019-01-10 13:38:47

标签: php smtp phpmailer

我一直使用PHPMailer代表我的 office365 帐户发送SMTP电子邮件,并且已经运行了大约一周。然后突然停止工作,我不知道发生了什么变化。

当我在PHPMailer中启用高调试日志记录时,会看到以下内容:

  

SMTP->从服务器:220 CY4PR15CA0011.outlook.office365.com Microsoft   ESMTP邮件服务已于2019年1月10日星期四13:30:20 +0000 SMTP->就绪   从服务器:250-CY4PR15CA0011.outlook.office365.com您好   [198.154.243.158] 250尺寸157286400 250管250-DSN   250-增强状态代码250-STARTTLS 250-8BITMIME 250-BINARYMIME   250-CHUNKING 250 SMTPUTF8 SMTP->错误:AUTH不被接受   服务器:504 5.7.4无法识别的身份验证类型   [CY4PR15CA0011.namprd15.prod.outlook.com] SMTP->来自服务器:250   2.0.0重置

这似乎是最相关的:

  

服务器未接受AUTH:504 5.7.4无法识别的身份验证   输入

以下是我原本的SMTP设置,该设置已交给PHPMailer:

smtpAuth: true
smtpSecure: STARTTLS
smtpHost: smtp.office365.com
smtpPort: 587
smtpUsername: [hidden]
smtpPassword: [hidden]
emailTo: [hidden]

以及实际的PHP代码:

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = $smtpAuth;
$mail->SMTPSecure = $smtpSecure;
$mail->Host = $smtpHost;
$mail->Port = $smtpPort;
$mail->Username = $smtpUsername;
$mail->Password = $smtpPassword;
$mail->SetFrom($smtpSenderDisplay);
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($emailTo);

作为健全性检查,我在Windows Live Mail中设置了具有相同设置的SMTP帐户-一切正常。没有错误。外发电子邮件将落在我拥有的其他电子邮件帐户的收件箱中。

因此Windows Live Mail的操作与我的PHP脚本的操作有所不同,请记住,直到几天前我的PHP脚本都可以正常工作。

有什么想法需要改变吗?

1 个答案:

答案 0 :(得分:0)

Microsoft将SMTP加密要求从STARTTLS更改为TLS。解决了。​​