SMTP错误代码符合性

SMTP错误代码符合性,smtp,Smtp,我不太确定这是否是提出这个问题的最佳场所(或是错误)。我正在使用第三方.NET SMTP组件将电子邮件直接发送到收件人的邮件服务器。我需要这样做,以获得交付的实时结果。通过另一个SMTP服务器发送要求我通过DSN报告异步获取结果,这对于我的应用程序来说太麻烦了 无论如何,目标SMTP服务器返回的错误代码与错误消息不符,我遇到了问题。因此,我不能将交付标记为硬反弹或软反弹。例如,回复错误代码为450(表示邮箱不可用),但回复消息与超时有关。当我再次发送相同的消息时,它通过了。显然,上一次发送存在超

我不太确定这是否是提出这个问题的最佳场所(或是错误)。我正在使用第三方.NET SMTP组件将电子邮件直接发送到收件人的邮件服务器。我需要这样做,以获得交付的实时结果。通过另一个SMTP服务器发送要求我通过DSN报告异步获取结果,这对于我的应用程序来说太麻烦了

无论如何,目标SMTP服务器返回的错误代码与错误消息不符,我遇到了问题。因此,我不能将交付标记为硬反弹或软反弹。例如,回复错误代码为450(表示邮箱不可用),但回复消息与超时有关。当我再次发送相同的消息时,它通过了。显然,上一次发送存在超时问题

我还意识到,问题可能不在于接收SMTP服务器,而在于保护服务器的防火墙/代理(不管你怎么称呼它)

有没有人遇到过类似的问题?你是如何处理的


PS:当我回到办公室时,我会尝试从日志中提供更多细节。

听起来像是灰色列表。这很有趣,因为当我开始阅读你的问题时,这是我能预料到的第一个障碍之一

Greylisting是一种反垃圾邮件的方法,它的工作原理是软邮件在一段时间后无法通过合法的MTA尝试重新提交邮件。不幸的是,有两件事对你不利:

  • 灰色列表周期可以随机选择。这意味着,有时需要多次重试才能接受邮件进行传递
  • 虽然4xx代码应始终被视为软故障并用于此目的,但服务器不需要告诉您这是由于灰色列表造成的。有些人会很善良,有些人不会

如何处理这一问题将取决于软故障是否被视为应用程序正在执行的最终故障。如果它们不是,那么您将不得不设计一些可靠的排队和重试。我真诚地建议您,实施可靠的DSN或日志检查可能比发明自己的RFC(和quirk)兼容MTA更容易。

@Dan,非常可靠。灰色列表是我所怀疑的,我没有想到随机方面。我正在努力避免DSN methid,因为这意味着我将不得不在我的应用程序中添加另一块东西,这不足以证明成本的合理性。我确实是在“发明”我自己的RFC,通过监视回复消息,并在我的逻辑中添加条件来“标记”传递的反弹类型。任何人,给你一个。我将再等几天,等待更多的输入,然后关闭这个。谢谢,伙计,没问题。当然,很可能只是本地MTA配置错误,而不是灰色列表。但不管怎样,所有这些原则仍然是正确的。