首先创建.eml文件而不将EmailMessage保存到邮箱

时间:2014-03-13 21:52:57

标签: c# exchangewebservices eml

我的目标是获取消息参数(从,到,正文,主题等)并创建一个.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);
}

但是我在消息上得到了一个例外.Load()说"这个操作无法执行,因为这个服务对象没有Id。"通过一点调试我基本上看到了message.Id为null。我没有二传手。我相信这是因为消息在保存到文件夹之前不会获取ID,这是我无法做到的。

有什么方法可以解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:1)

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