2

我正在使用 GMail SMTP 服务器发送邮件。和 PHPMailer 作为邮件发送脚本。

我收到了这个错误(我记录了所有的 SMTP 错误,即每当 PHPMailer::Send 失败):-

SMTP Error: Data not accepted.<p>SMTP server error: 4.7.0 Temporary System Problem.  Try again later (WS)

但邮件实际上是发送的。(我通过匹配已发送邮件的时间戳和日志中的时间戳知道这一点。)

这怎么可能?这个错误是什么意思?

更新:我想我的问题并不清楚。让我改写一下:-

不担心在 PHPMailer 能够将邮件发送到 GMail SMTP 后邮件是否丢失。但我担心 PHPMailer 已经返回错误,但邮件已发送。可能吗?

4

1 回答 1

2

我认为 SMTP 无论如何都不能保证交付。它是一种存储转发机制。这就是为什么某些电子邮件可能会丢失的原因(例如,如果中继在中继消息的过程中崩溃了)。

如果您依赖电子邮件来执行重要功能,您可能需要强制执行某种反馈机制(可能通过响应)。然后,如果在特定时间范围内未收到响应,您再试一次。

更新:这当然是可能的。您所需要的只是一个向您发送错误代码的邮件服务器。它可能会由于各种原因发送错误代码,不胜枚举。我建议使用上述方法是因为,您永远不应该仅依靠信任来获取服务器响应,尤其是在它没有任何原子性/酸性的情况下。

于 2009-06-18T08:56:22.723 回答