问题 如何在不使用smtp的情况下通过Exchange服务器发送电子邮件?


我正在尝试通过我们公司的交换服务器发送来自c#代码的电子邮件。

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("exchangebox1.mycompany.com");
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage("Me@myCompany.com",
                "Them@mycompany.com",
                "title here",
                "body here");
            client.Send(msg);

当我运行这个时,我得到SmptException,说“服务不可用,关闭传输通道。服务器响应是4.3.2服务不可用,关闭传输通道”。

我解释这意味着我们的交换机上没有启用SMTP,我需要使用本机Exchange Server命令来发送邮件。这是正确的,还是SMTP应该始终有效?

此外,是否可以将Exchange服务器配置为仅允许某些计算机/用户通过SMTP发送主服务器?

如何在不使用SMTP的情况下通过Exchange Server发送邮件?

谢谢。


13171
2017-08-28 15:13


起源

您是否在发送电子邮件的帐户上启用了转发功能?我认为这是Exchange管理员需要在该帐户上设置的内容,以允许您使用该帐户发送电子邮件而无需使用身份验证。 - Jim W
谢谢,我会试着找出来。 - Scott Langham


答案:


你可以使用 WCF Exchange Server邮件传输 一个如何实现的例子是 这里

特别是关于发送消息,它说

当应用程序发送消息时   它调用了Send方法   当前的输出通道,必须是   打开。输出通道序列化   消息到字符串并创建   “草稿”文件夹中的消息。它   在中设置适当的值   电子邮件字段。当消息有   已创建,它被移入   发件箱。这通过CEMAPI发生   设备或通过Exchange Web   桌面上的服务。在   设备,发件箱中的消息   与其他传出同步   消息,由ActiveSync定义。


7
2017-08-28 15:18





您可以使用新的Exchange Web服务托管API 1.0。它似乎是最好的解决方案。 继承人的链接。

http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx
https://blogs.technet.com/b/exchange/archive/2009/04/21/3407328.aspx
接受也将接受分发列表。

2.0版的API
http://msdn.microsoft.com/en-us/library/office/dd633709.aspx


4
2018-05-26 20:29



“这个主题不再可用”,所以不要去那里! - CSharper
只是一点点腐烂。我替换了替代,并添加了2.0版API的链接。 - EBarr


尝试在发送之前添加这两行:

client.UseDefaultCredentials = true;
client.EnableSsl = true;

这很可能是一个没有凭据的问题,所以我会从谷歌那里作弊...
来自dailycode.net


3
2017-08-28 15:18



谢谢您的帮助。我担心我得到同样的例外。 - Scott Langham


我知道这是一个老线程,但为了完整,你应该考虑 Microsoft Exchange WebServices nuget包:

https://www.nuget.org/packages/Microsoft.Exchange.WebServices

ExchangeService service = new ExchangeService();  
service.AutodiscoverUrl("youremailaddress@yourdomain.com");  

EmailMessage message = new EmailMessage(service);  
message.Subject = "my subject";  
message.Body = "my body";  
message.ToRecipients.Add("my_target@example.com");  
message.Save();  

message.SendAndSaveCopy();

0
2018-01-05 10:55