如何使用Exchange 2007和c#在我的域外发送电子邮件

只要from和to地址都在我的域中,我就能够在Exchange 2007上使用典型的C#SMTP代码发送电子邮件。

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

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

我如何获得交换接受我的电子邮件并将其发送到互联网?

尝试#2 …如何使用Exchange代答文件夹呢? 它们是通过Exchange发送电子邮件的更快捷方式,因为它只是创建电子邮件并将其丢弃在文件夹中,无需等待连接到服务器或等待回复。 另外我认为它会跳过整个接力问题。

像这样配置你的SmtpClient:

SmtpClient srv = new SmtpClient("exchsrv2007", 25) { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = "\\exchsrv2007\PickupFolder" } ... 

对Exchange服务器进行身份validation。

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


DefaultNetworkCredentials返回用户名等的空字符串并导致此exception…

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

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

如果它的用途有限,您可以设置服务器端规则以转发满足域外某些条件的消息。 你也许可以在这些中使用VBA以及漂亮的东西,但我不确定。

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