我正在尝试通过我们公司的交换服务器发送来自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发送邮件?
谢谢。
你可以使用 WCF Exchange Server邮件传输
一个如何实现的例子是 这里
特别是关于发送消息,它说
当应用程序发送消息时
它调用了Send方法
当前的输出通道,必须是
打开。输出通道序列化
消息到字符串并创建
“草稿”文件夹中的消息。它
在中设置适当的值
电子邮件字段。当消息有
已创建,它被移入
发件箱。这通过CEMAPI发生
设备或通过Exchange Web
桌面上的服务。在
设备,发件箱中的消息
与其他传出同步
消息,由ActiveSync定义。
尝试在发送之前添加这两行:
client.UseDefaultCredentials = true;
client.EnableSsl = true;
这很可能是一个没有凭据的问题,所以我会从谷歌那里作弊...
来自dailycode.net
我知道这是一个老线程,但为了完整,你应该考虑 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();