未能为phpmailer的第一个实例加载语言字符串:tls,但第二个实例成功发送了邮件



我尝试使用两个不同的phpmailer实例发送两封不同的邮件。我使用相同的凭据和smtp信息,但正文和收件人地址不同。有时,我的第一个实例并非总是抛出错误。以下是我的调试信息,同时抛出第一个实例成功的错误,第二个实例发送邮件。

SMTP -> FROM SERVER:220 MN2PR06CA0023.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 20 Apr 2020 11:38:10 +0000
SMTP -> FROM SERVER: 250-MN2PR06CA0023.outlook.office365.com Hello [13.82.85.118] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8
SMTP -> FROM SERVER:220 2.0.0 SMTP server ready
SMTP -> FROM SERVER:
SMTP -> ERROR: RSET failed:
Language string failed to load: tls
SMTP -> FROM SERVER:220 MN2PR05CA0058.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 20 Apr 2020 11:38:21 +0000
SMTP -> FROM SERVER: 250-MN2PR05CA0058.outlook.office365.com Hello [13.82.85.118] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8
SMTP -> FROM SERVER:220 2.0.0 SMTP server ready
SMTP -> FROM SERVER: 250-MN2PR05CA0058.outlook.office365.com Hello [13.82.85.118] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-AUTH LOGIN XOAUTH2 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 SMTPUTF8
SMTP -> FROM SERVER:250 2.1.0 Sender OK
SMTP -> FROM SERVER:250 2.1.5 Recipient OK
SMTP -> FROM SERVER:354 Start mail input; end with .
SMTP -> FROM SERVER:250 2.0.0 OK <XXXXXXXXXXXXXXXXXXXXXXXXX@XXXXXXX.com> [Hostname=MA1PR01MB2377.INDPRD01.PROD.OUTLOOK.COM]

看起来你的脚本运行正常——它只是一个调试输出字符串出现了问题,而出现"Language string failed to load"错误消息意味着你使用的是一个非常旧的PHPMailer版本,所以我建议你更新它。

最后我发现问题是因为office365 smtp服务器有时速度慢,尤其是在使用tls时,默认的10秒超时是不够的。在phpmailer.php中将默认超时从10更改为20之后,它就像一个符咒。

相关内容

最新更新