我在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);
我尝试的选项:
答案 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管理器
选择SMTP服务器的属性
在“选项卡”选项卡上,选择“中继
”
添加您的公共IP地址
关闭对话框并在同一选项卡上单击“身份验证”按钮。
添加集成Windows身份验证
也许不需要一些步骤,但它有效。
答案 2 :(得分:3)
我们有这个问题。在权限和安全性方面,一切都设置得很好。
在大海捞针之后。问题是某种启发式。在电子邮件正文中,无论何时列出某个电子邮件地址,我们都会从我们的Exchange服务器收到上述错误消息。需要2天的疯狂测试和拔毛才能找到它。
因此,如果您已检查完所有内容,请尝试将电子邮件正文更改为“test”一词。如果在那之后,您的电子邮件没有问题,那么您就会遇到某种类似我们的垃圾邮件/启发式过滤器问题