2014-03-13 46 views
2

我的目标是将消息参数(from,to,body,subject等)和创建.eml文件。创建.eml文件而不将EmailMessage首先保存到邮箱

我目前使用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是空的。 Id没有setter。我相信这是因为邮件在保存到文件夹之前没有得到ID,这是我无法做到的。

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

谢谢

回答

1

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

+0

我使用EmailMessage类,因为我认为它有一个方法来生成MimeContent并保存到eml文件(Load方法)。有没有办法利用服务器生成MimeContent的任何逻辑而不保存到它?如果没有,是否有关于如何正确格式化eml文件的指导方针/文档? (我的理解不一定)谢谢 – thogue

+0

我的理解是.eml格式基于RFC822(http://www.rfc-editor.org/rfc/rfc822.txt)或其后继RFC。您可能试图查看是否有人向.eml解析器发送了EmailMessage,或者您可以检查.eml文件(它是纯文本),以便您可以创建自己的解析。 –

相关问题