17

我在 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 服务器),因为它托管在其他人的服务器上
4

3 回答 3

44

大多数 SMTP 服务器的默认配置是不从不受信任的源中继到外部域。例如,假设您联系 foo.com 的 SMTP 服务器并要求它向 bar@xyzzy.com 发送消息。因为 SMTP 服务器并不真正知道你是谁,所以它会拒绝中继消息。如果服务器确实为您这样做,它将被视为开放中继,这就是垃圾邮件发送者经常做的事情。

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

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

有关如何发送凭据的示例,请参阅无法使用 SMTP 向外部域发送电子邮件。

于 2013-03-30T13:25:39.000 回答
11

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

我刚刚做了两个更改,但我没有帮助。

转到 IIS 6 管理器

转到 IIS 6 管理器

选择 SMTP 服务器的属性

选择 SMTP 服务器的属性

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

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

添加您的公共 IP 地址

添加您的公共 IP 地址

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

添加集成 Windows 身份验证

添加集成 Windows 身份验证

也许不需要某些步骤,但它可以工作。

于 2015-04-17T02:56:40.310 回答
3

我们遇到了这个问题。就权限和安全性而言,一切都设置得很好。

在大海捞针之后。问题是某种启发式方法。在电子邮件正文中,只要列出某个电子邮件地址,我们就会从我们的交换服务器收到上述错误消息。

花了 2 天的疯狂测试和拉头发才找到这个。

因此,如果您检查了所有内容,请尝试将电子邮件正文更改为仅包含“测试”一词。如果在那之后,您的电子邮件正常,您遇到了某种垃圾邮件/启发式过滤器问题,就像我们一样

于 2015-03-30T17:20:23.390 回答