只要from和to地址都在我的域中,我就可以使用典型的C#SMTP代码在Exchange 2007上发送电子邮件。
当我尝试在域外发送电子邮件时,我得到:
异常详细信息:System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应为:5.7.1无法中继
如何让交换机接受我的电子邮件并将其发送到互联网?
答案 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返回 用户名等空字符串 导致这个例外...
答案 2 :(得分:1)
您需要让您的Exchange管理员配置交换以允许在域外发送。根据我的经验,由于垃圾邮件问题,他们一直不愿意这样做。
如果'限制使用',您可以设置服务器端规则以转发符合域外某些条件的邮件。你可能也可以在这些中使用VBA,但我不确定。
答案 3 :(得分:0)
您是否已从网络服务器将交换服务器设置为allow relays?切换到Exchange 2007时遇到了同样的问题。