我正在用 Flex/Actionscript 编写程序,并使用运行 Postfix 的 Apple OSX 服务器。如果邮件无法发送,则会将其存储在数据库中,以便稍后发送。
我的问题是,如果我的数据库中有 3 条电子邮件,那么当我尝试将它们发送到我的 postfix 服务器时,我需要知道哪些电子邮件(如果有)已成功排队。
但是回复不是按顺序返回的?
以下是 3 封电子邮件的回复示例。
注意事项:我为未知用户注入了 VRFY(以便我可以搜索它),因此有 550 个响应。
500(语法错误,是我的错,基本上我认为是错误的换行符)
我所有应该发送成功的邮件都发送成功了,但是我需要知道哪些邮件没有发送成功,当它们发送失败时,我不会从数据库中删除它们,而是再试一次
我希望排队的消息位于每个电子邮件套接字响应的正文中,在(221)Bye 响应之前,发送的其他 3 封电子邮件也是这种情况吗?
欢迎任何想法。
提前感谢你的帮助
菲尔。
========服务器响应三封电子邮件,已成功排队==========
220 web.org ESMTP 后缀
220 web.org ESMTP 后缀
220 web.org ESMTP 后缀
550 5.1.1:收件人地址被拒绝:本地收件人表中的用户未知
250 死亡网络
334 V22l225hbWU6
334 U222233vcmQ6
235 身份验证成功
250 2.1.0 确定
250 2.1.5 确定
500 5.5.2 错误:语法错误
354 以 结束数据。
550 5.1.1:收件人地址被拒绝:本地收件人表中的用户未知
250 死亡网络
334 V22l225hbWU6
334 U222233vcmQ6
235 身份验证成功
250 2.1.0 确定
250 2.1.5 确定
500 5.5.2 错误:语法错误
354 以 结束数据。
550 5.1.1:收件人地址被拒绝:本地收件人表中的用户未知
250 死亡网络
334 V22l225hbWU6
334 U222233vcmQ6
235 身份验证成功
250 2.1.0 确定
250 2.1.5 确定
500 5.5.2 错误:语法错误
354 以 结束数据。
250 2.0.0 确定:排队为 504596E372
221 2.0.0 再见
250 2.0.0 确定:排队为 71F026E373
221 2.0.0 再见
250 2.0.0 确定:排队为 970A06E374
221 2.0.0 再见
==========
答案1
响应在一个 SMTP 会话中按顺序返回,但您似乎在一个日志中混杂了来自三个不同 SMTP 会话的响应。您应该分别跟踪每个 SMTP 会话,一旦您得到响应,250 2.0.0 Ok: queued
您就可以从数据库中删除消息。