我的目标是获取消息参数(从,到,正文,主题等)并创建一个.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为null。 id没有二传手。我相信这是因为该消息只有将其保存到文件夹后才能获得ID,而我无法这样做。
有什么办法可以解决此问题?
谢谢
最佳答案
EmailMessage类没有MIME解析器/编写器。 MimeContent由服务器创建。解决方法是创建自己的解析器,以解析在EmailMessage对象上设置的属性。如果不保存到服务器,为什么要使用EmailMessage类?
关于c# - 创建.eml文件而不先将EmailMessage保存到邮箱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22391761/