我每天发送一封邮件,每天发送给人员列表。我使用PHP和PHPMailer对象来发送电子邮件。SMTP错误问题 - PHPMailer
这一直工作正常,直到今天,当我没有收到一封电子邮件(试验),我检查日志以发现间歇我得到SMTP错误从
回来之类的mail->Send();
方法对一些人 - 不是全部。
除了名称和电子邮件地址外,所有电子邮件的大小(字符长度)完全相同。
从
$mail->ErrorInfo;
错误细节包括这两个错误
SMTP错误:数据不被接受。 <p> SMTP服务器错误:2.1.5好的
SMTP错误:数据未被接受。 < p & gtSMTP服务器错误:</P >
为什么有断p标签错误消息我不知道 - 也就是为什么第一个错误中有OK?
但是循环中的其他人有电子邮件出来罚款。
此外,当我把脚本放入测试模式时,只有这些失败通过电子邮件发送出去(所以一次脚本调用=一封电子邮件给一个人),我发现没有问题,人们得到了他们的电子邮件。
现在我问技术支持是什么意思,并回到“谷歌它”,我无法找到任何地方的错误2.1.5。我真的不明白为什么它在错误之后说得好。
作为明天的测试,我对失败的发送进行了一次测试,然后再次尝试进行5秒的测试。
我不知道这是否会有所帮助,但我认为也许我的SMTP服务器与我的脚本(Rackspace VPS Linux)位于同一台服务器上,并且存在临时连接问题,因此在这种情况下睡眠可能非常方便。
这是我第一次遇到这个问题,我没有重新启动APACHE或我的服务器(或邮件服务器),在这个脚本之前我有另外一个发出403电子邮件没有任何问题。
这将是很高兴知道错误是什么以及它为什么发生。
罗布
如果错误不是真的错误,那么消息重试之间的睡眠也会有所帮助。我在看的响应代码页面没有显示2.1.5,所以我没有看到任何提及。如果2表示“目标地址有效”,那么.1和.5是什么意思?无论如何要找出答案。难道它只是一个淹没邮件服务器的情况吗?在这种情况下,每个电子邮件发送和重试帮助之间会有更长的超时时间? – MonkeyMagix 2014-11-19 10:46:19
它以“2”开头表示它是成功代码(请参阅第2节)。它后面的'.1'表示它是一个地址状态(也是第2节),整个'* .1.5'模式在3.2节列出。并非所有的前缀和状态组合都是有意义的 - 例如5.1.7对垃圾邮件过滤器的拒绝是有意义的,但是对于被垃圾邮件过滤器接受,2.1.7没有任何意义! – Synchro 2014-11-19 15:01:39
你可以尝试设置'$ mail-> SingleTo = true;',它会分别发送每条消息(如果你设置了多个'to'地址),这可能会给你一个更精确的反馈。您也可以尝试打开/关闭SMTPKeepAlive。除非你发送大量数据(数千个),否则增加延迟可能无济于事。 – Synchro 2014-11-19 15:05:17