间歇性的“服务器响应是:5.7.1无法中继”错误

时间:2011-09-06 16:22:06

标签: c# email exception smtp

我有一个在服务器上运行的小型C#电子邮件应用程序。启动时,它会发送一封电子邮件然后消失。大部分时间它工作正常,但每隔一段时间它就会产生以下错误:

System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.7.1 Unable to relay for joe123@msn.com
   at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at AppEmail.clsEmailMgr.SendEmail(MailMessage inMM, Int32 inTriesLimit, Int32 inSleepTime)
   at AppEmail.clsEmailMgr.MainProcess()

我已经看过其他关于此类错误的帖子,但他们倾向于关注服务器设置 - 我认为这是正确的 - 否则这个应用程序永远不会工作......而且大部分时间都是如此。

另一个注意事项:此应用程序可以相当快速地被多次调用,因此可能存在这样的情况:不同的自身实例几乎同时尝试发送电子邮件。垃圾邮件过滤器是否可以阻止某些电子邮件发送尝试?任何其他想法将不胜感激。

2 个答案:

答案 0 :(得分:1)

发生此错误取决于服务器设置...它不会阻止您的代码一直工作...但它禁止发送电子邮件与发件人/来自不允许的域和/或发送电子邮件到域名不允许......因此在错误中提到“接力”......

通常,如果您要求服务器从a@b.com发送电子邮件并且服务器仅为域c.com设置,则会出现此错误...否则它将容易被垃圾邮件发送者滥用(谷歌for:垃圾邮件开放中继)...如果您的应用程序需要出于合法原因进行此类“中继”,请要求邮件服务器管理员配置邮件服务器,它允许为托管您的应用程序的计算机进行中继...

快速发送不应该是一个问题,除非它可能被视为一个受感染的机器试图发送大量的垃圾邮件...因为你没有告诉任何关于每个时间单位的数量,这是纯粹的猜测... < / p>

答案 1 :(得分:0)

我遇到了一个类似的间歇性问题(无法接收)我的一个应用程序。我验证了SMTP主机日志,并且记录的错误是“Auth login”失败。最后,我们尝试将UPN(通用主体名称)格式的SMTP凭据用户名传递给SMTP客户端。

示例:使用username@abc.com而不是域/用户名

这将产生一致的结果。