信箱不可用。服务器响应为:5.7.1无法中继错误

时间:2013-03-30 10:58:16

标签: c# asp.net smtpclient

我在netsol服务器上托管了我的一个网站。从那里contact.aspx必须使用交换服务器发送电子邮件。当我尝试发送电子邮件时:

  

错误:邮箱不可用。服务器响应为:5.7.1无法中继

代码:

MailMessage message = new MailMessage(@"xxx@example.com", 
                                      @"test_user@yahoo.com",
                                       "New Message",
                                       "Exchange");
SmtpClient mail = new SmtpClient("exchange.abc.com", 29);
mail.EnableSsl = true;
mail.Credentials = new NetworkCredential(@"xxx@example.com", @"password");
mail.UseDefaultCredentials = false;
mail.DeliveryMethod = SmtpDeliveryMethod.Network;
mail.Send(message);

我尝试的选项:

  • 在端口465或587或25
  • 上测试
  • 更改了SmtpDeliveryMethod.PickupDirectoryFromIis
  • 无法配置IIS(SMTP服务器),因为它托管在其他人的服务器上

3 个答案:

答案 0 :(得分:40)

大多数SMTP服务器的默认配置不是从不受信任的源中继到外部域。例如,假设您联系SMTP服务器以获取foo.com并要求它向bar@xyzzy.com发送消息。由于SMTP服务器并不真正知道您是谁,因此它将拒绝转发该消息。如果服务器 为您执行此操作,则会将其视为open relay,这是垃圾邮件发送者经常做的事情。

如果您联系foo.com邮件服务器并要求它发送邮件到somebody@foo.com,可能允许您这样做。这取决于他们是否相信你是谁,你是谁。通常,服务器将尝试进行反向DNS查找,如果您发送的IP与DNS中的MX记录的IP地址不匹配,则拒绝发送邮件。因此,如果您说您是bar.com邮件服务器但您的IP地址与bar.com的MX记录不匹配,那么它将拒绝传递该邮件。

您需要与该SMTP服务器的管理员联系以获取身份验证信息,以便它允许您进行中继。联系SMTP服务器时,您需要提供这些凭据。通常它是用户名/密码,或者它可以使用Windows权限。取决于服务器及其配置方式。

有关如何发送凭据的示例,请参阅Unable to send emails to external domain using SMTP

答案 1 :(得分:10)

我使用Windows Server 2012进行托管很长一段时间,它在多年没有任何问题后停止工作。我的解决方案是将服务器的公共IP地址添加到中继列表并启用Windows集成身份验证。

我刚做了两处修改而且没有哪些帮助。

转到IIS 6管理器

Go to IIS 6 Manager

选择SMTP服务器的属性

Select properties of SMTP server

在“选项卡”选项卡上,选择“中继

On tab Access, select Relays

添加您的公共IP地址

Add your public IP address

关闭对话框并在同一选项卡上单击“身份验证”按钮。

添加集成Windows身份验证

Add Integrated Windows Authentication

也许不需要一些步骤,但它有效。

答案 2 :(得分:3)

我们有这个问题。在权限和安全性方面,一切都设置得很好。

在大海捞针之后。问题是某种启发式。在电子邮件正文中,无论何时列出某个电子邮件地址,我们都会从我们的Exchange服务器收到上述错误消息。

需要2天的疯狂测试和拔毛才能找到它。

因此,如果您已检查完所有内容,请尝试将电子邮件正文更改为“test”一词。如果在那之后,您的电子邮件没有问题,那么您就会遇到某种类似我们的垃圾邮件/启发式过滤器问题