只要发件人和收件人地址都在我的域内,我就可以使用典型的 C# SMTP 代码跨 Exchange 2007 发送电子邮件。
一旦我尝试在域外发送电子邮件,我就会得到:
异常详细信息:System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应为:5.7.1 无法中继
如何让 Exchange 接受我的电子邮件并将其发送到互联网?
只要发件人和收件人地址都在我的域内,我就可以使用典型的 C# SMTP 代码跨 Exchange 2007 发送电子邮件。
一旦我尝试在域外发送电子邮件,我就会得到:
异常详细信息:System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应为:5.7.1 无法中继
如何让 Exchange 接受我的电子邮件并将其发送到互联网?
尝试 #2... 改用Exchange Pickup Folder怎么样?它们是通过 Exchange 发送电子邮件的更快方式,因为它只是创建电子邮件并将其放入文件夹中,无需等待连接到服务器或等待回复。另外,我认为它跳过了整个继电器问题。
像这样配置你的 SmtpClient:
SmtpClient srv = new SmtpClient("exchsrv2007", 25) {
DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
PickupDirectoryLocation = "\\exchsrv2007\PickupFolder"
}
...
向交换服务器进行身份验证。
http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.credentials.aspx
DefaultNetworkCredentials 为用户名等返回空字符串并导致此异常...
您需要让您的交换管理员配置交换以允许在域外发送。根据我的经验,由于垃圾邮件问题,他们一直不愿意这样做。
如果它的用途有限,您可以设置服务器端规则以交换在域外转发满足某些条件的邮件。您也许可以在这些中使用 VBA 来美化事物,但我不确定。
您是否设置了交换服务器以允许来自您的 Web 服务器的中继?切换到 Exchange 2007 时,我遇到了同样的问题。