5

只要发件人和收件人地址都在我的域内,我就可以使用典型的 C# SMTP 代码跨 Exchange 2007 发送电子邮件。

一旦我尝试在域外发送电子邮件,我就会得到:

异常详细信息:System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应为:5.7.1 无法中继

如何让 Exchange 接受我的电子邮件并将其发送到互联网?

4

4 回答 4

8

尝试 #2... 改用Exchange Pickup Folder怎么样?它们是通过 Exchange 发送电子邮件的更快方式,因为它只是创建电子邮件并将其放入文件夹中,无需等待连接到服务器或等待回复。另外,我认为它跳过了整个继电器问题。

像这样配置你的 SmtpClient:

SmtpClient srv = new SmtpClient("exchsrv2007", 25) {
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = "\\exchsrv2007\PickupFolder"
}
...
于 2009-01-14T19:46:07.867 回答
6

向交换服务器进行身份验证。

http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.credentials.aspx


DefaultNetworkCredentials 为用户名等返回空字符串并导致此异常...

这是一个示例,这是另一个使用 System.Net.Mail 发送经过身份验证的消息的示例。

于 2009-01-14T19:06:11.613 回答
1

您需要让您的交换管理员配置交换以允许在域外发送。根据我的经验,由于垃圾邮件问题,他们一直不愿意这样做。

如果它的用途有限,您可以设置服务器端规则以交换在域外转发满足某些条件的邮件。您也许可以在这些中使用 VBA 来美化事物,但我不确定。

于 2009-01-14T19:05:23.267 回答
0

您是否设置了交换服务器以允许来自您的 Web 服务器的中继?切换到 Exchange 2007 时,我遇到了同样的问题。

于 2009-01-14T19:08:55.600 回答