2

我的目标是获取消息参数(从、到、正文、主题等)并创建一个 .eml 文件。

我目前正在使用 EWS 托管 API(尽管我愿意接受其他建议)来创建一个 EmailMessage 对象。我不想将消息保存到邮箱或发送它(这是不可能的,因为我正在使用的应用程序帐户由于安全策略而无法访问任何邮箱),我想创建一个 .eml 文件。

我改编了从另一个看起来很有希望的答案中找到的一些代码:

EmailMessage message = new EmailMessage(service);

//message initialization code
//...

using (FileStream fs = File.Open(@"message.eml", FileMode.Create, FileAccess.Write))  
{
    message.Load(new PropertySet(ItemSchema.MimeContent));
    var mc = message.MimeContent;
    fs.Write(mc.Content, 0, mc.Content.Length);
}

但是我在 message.Load() 上收到一个异常,说“无法执行此操作,因为此服务对象没有 Id。” 通过一点调试,我基本上看到 message.Id 为空。Id 没有设置器。我相信这是因为消息在保存到文件夹之前不会获得 ID,而我无法做到这一点。

有没有办法解决这个问题?

谢谢

4

1 回答 1

1

EmailMessage 类没有 MIME 解析器/编写器。MimeContent 由服务器创建。解决方法是创建自己的解析器来解析在 EmailMessage 对象上设置的属性。如果您不保存到服务器,为什么要使用 EmailMessage 类?

于 2014-03-14T18:26:16.337 回答