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

C# 如何使用Exchange 2007和c在域外发送电子邮件#,c#,smtp,exchange-server-2007,C#,Smtp,Exchange Server 2007,只要发件人和收件人地址都在我的域内,我就可以在Exchange2007中使用典型的C#SMTP代码发送电子邮件 一旦我尝试在域外发送电子邮件,我就会收到: 异常详细信息:System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应为:5.7.1无法中继 如何让exchange接受我的电子邮件并将其发送到internet?您需要让exchange管理员将exchange配置为允许在域外发送电子邮件。根据我的经验,由于担心垃圾邮件,他们一直不愿意这

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

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

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


如何让exchange接受我的电子邮件并将其发送到internet?

您需要让exchange管理员将exchange配置为允许在域外发送电子邮件。根据我的经验,由于担心垃圾邮件,他们一直不愿意这样做


如果它的用途有限,您可以在exchange中设置服务器端规则,以便在域外转发满足特定条件的邮件。您也可以在这些应用程序中使用VBA来美化环境,但我不确定。

向exchange服务器进行身份验证



DefaultNetworkCredentials返回 用户名等的空字符串和 导致此异常


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

是否已将exchange服务器设置为从web服务器发送?切换到Exchange2007时,我遇到了同样的问题。

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

按如下方式配置您的SmtpClient:

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

我关注了这篇文章,但没有任何区别:(DefaultNetworkCredentials返回用户名等的空字符串,并导致此异常:邮箱不可用。服务器响应为:5.7.1客户端没有作为此发件人发送的权限+1
Client.Credentials=CredentialCache.DefaultNetworkCredentials;
解决了我的中继问题。使用此选项中继正常。+1公司有多台exchange服务器,并且至少允许一台服务器在域外转发电子邮件。您能告诉我,我在exchange方面的大部分经验都是在较小的公司进行的吗:默认情况下,不需要共享网络路径,并且ASP.NET进程正在作为(或模拟)运行需要权限才能访问该目录。对于这样一个节省时间的解决方案,+1。完美地解决了我的问题。