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

时间:2009-01-14 18:52:36

标签: c# smtp exchange-server-2007

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

当我尝试在域外发送电子邮件时,我得到:

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

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

4 个答案:

答案 0 :(得分:8)

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

像这样配置你的SmtpClient:

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

答案 1 :(得分:6)

向Exchange服务器进行身份验证。

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


  

DefaultNetworkCredentials返回   用户名等空字符串   导致这个例外...

以下是example,此处是another与System.Net.Mail发送经过身份验证的消息。

答案 2 :(得分:1)

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

如果'限制使用',您可以设置服务器端规则以转发符合域外某些条件的邮件。你可能也可以在这些中使用VBA,但我不确定。

答案 3 :(得分:0)

您是否已从网络服务器将交换服务器设置为allow relays?切换到Exchange 2007时遇到了同样的问题。