在无法访问 Internet 连接的情况下创建 EmailMessage 对象

Creating EmailMessage object without access to internet connection

我正在创建一个程序,该程序在完成某个过程后使用 Microsoft Exchange 自动发送电子邮件。如果用户在发送电子邮件时没有互联网连接,程序会将电子邮件保存为本地 .eml 文件。当用户连接恢复后,一项单独的服务将定期检查并发送这些电子邮件。

这是我设置服务和创建消息对象的代码:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new WebCredentials("exampleaddress@example.com", "Password");
service.AutodiscoverUrl("exampleaddress@example.com", RedirectionUrlValidationCallback);
EmailMessage message = new EmailMessage(service);

我遇到的问题是,为了保存 EmailMessage,我需要使用服务对象对其进行初始化。但是,该服务需要互联网才能自动发现 URL。要求 Internet 来设置此服务违背了我正在尝试做的事情。

有没有一种方法可以设置此 EmailMessage 对象而不需要服务,进而不需要互联网?

您不一定需要使用自动发现功能。如果您事先知道,您可以手动提供交换 URL。

而不是

service.AutodiscoverUrl("exampleaddress@example.com", RedirectionUrlValidationCallback);

使用

service.Url = new Uri("https://example.com/EWS/Exchange.asmx");

您如何将邮件保存为 EML 文件,例如,如果您使用 EmailMessage Class 提供的 MimeContent,那么如果没有连接到 Exchange,您尝试做的事情将无法工作。 MimeContent 由 Exchange 存储生成,因此您只会为 Exchange 存储中存在的消息填充 属性。

如果您从头开始生成消息,只是以您自己的序列化格式存储数据,直到您准备好发送,如果您还没有生成任何 Mime 内容,那么使用 EML 文件应该没有任何优势

干杯 格伦