使用EWS API将邮件保存到msg文件

Bha*_*ash 30 exchange-server ews-managed-api

我正在使用Exchange Web服务托管API 1.1连接到Exchange Server 2010,然后找到收到的新电子邮件.现在我想将.msg文件的副本保存到磁盘上的文件夹中.

我不想使用任何付费第三方进行整合.

任何帮助将不胜感激.

Col*_*ard 58

如果您愿意保存到.eml格式中,只需使用EWS即可轻松完成,而无需第三方库.该.eml文件将包含所有相同的信息,并且可以通过Outlook以与.msg(以及其他程序)相同的方式打开.

message.Load(new PropertySet(ItemSchema.MimeContent));

MimeContent mc = message.MimeContent;
FileStream fs = new FileStream("c:\test.eml", FileMode.Create);

fs.Write(mc.Content, 0, mc.Content.Length);
fs.Close();
Run Code Online (Sandbox Code Playgroud)

清理代码:

message.Load(new PropertySet(ItemSchema.MimeContent));
var mimeContent = message.MimeContent;

using (var fileStream = new FileStream(@"C:\Test.eml", FileMode.Create))
{
    fileStream.Write(mimeContent.Content, 0, mimeContent.Content.Length);
}
Run Code Online (Sandbox Code Playgroud)

  • 同意.这非常有帮助!我只是稍微更改了一下使用using语句:using(FileStream fileStream = File.Open(@"C:\ message.eml",FileMode.Create,FileAccess.Write)){message.Load(new PropertySet(ItemSchema. MimeContent)); MimeContent mc = message.MimeContent; fileStream.Write(mc.Content,0,mc.Content.Length); } (3认同)

Joe*_*yle 7

使用EWS的MSG文件没有本机支持.它严格来说是一种Outlook格式.

MSG规范发布于http://msdn.microsoft.com/en-us/library/cc463912%28EXCHG.80%29.aspx.理解它有点复杂,但可行.您需要下拉消息的所有属性,然后将其序列化为OLE结构化文件格式.这不是一件容易的事.

最后,你可能最好不要使用第三方库,否则它可能是一项艰巨的任务.