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

11

我正在尝试通过我们公司的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是否总是可用?
此外,交换服务器是否可能被配置为只允许特定的计算机/用户通过SMTP发送邮件?
如何在不使用SMTP的情况下通过Exchange Server发送电子邮件?
谢谢。

您在发送邮件时是否已开启账户转发功能?我认为这是Exchange管理员需要在该帐户上设置的内容,以允许您使用该帐户发送电子邮件而不需要身份验证。 - Jim W
4个回答

7
您可以使用WCF Exchange Server Mail Transport,以下是实现示例:此处 具体而言,关于发送消息,它说:
应用程序发送消息时,调用当前输出通道上的Send方法,该通道必须处于打开状态。 输出通道将消息序列化为字符串并在草稿文件夹中创建消息。 它设置电子邮件字段中的适当值。 创建消息后,将其移动到发件箱。 这是通过设备上的CEMAPI或桌面上的Exchange Web Services完成的。 在设备上,发件箱中的消息会与ActiveSync定义的其他出站消息同步。

4

此主题已不可用,不要前往! - M. Jahedbozorgan
只是一点点链接失效了。我替换了一个备用链接,并添加了指向API 2.0版本的链接。 - EBarr

3
在发送之前,请尝试添加以下两行代码:
client.UseDefaultCredentials = true;
client.EnableSsl = true;

这很可能是由于缺少凭据导致的问题,所以我会从Google上找些帮助......
dailycode.net提供了一些参考。


非常感谢你的帮助。恐怕我还是遇到了相同的异常。 - Scott Langham

0

我知道这是一个旧的帖子,但为了完整起见,您应该考虑使用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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接