C# 从EWS导出可在MS Outlook中打开的电子邮件

C# 从EWS导出可在MS Outlook中打开的电子邮件,c#,exchangewebservices,exchange-server-2010,C#,Exchangewebservices,Exchange Server 2010,我正在编写一个使用EWS监视Exchange邮箱的应用程序。它将传入邮件的附件保存到网络文件夹中 这些文件然后由3d party应用程序使用 现在有人问我,是否不仅可以保存附件,还可以保存包含附件的整个电子邮件,以便在Outlook中打开。(不需要支持其他邮件客户端) Exchange服务器是Exchange2010,应用程序正在C# 这可以通过EWS实现吗?或者,我的唯一解决方案是使用Interop.Outlook创建.msg文件吗?您使用的是哪个Outlook版本?Outlook 2010可

我正在编写一个使用EWS监视Exchange邮箱的应用程序。它将传入邮件的附件保存到网络文件夹中

这些文件然后由3d party应用程序使用

现在有人问我,是否不仅可以保存附件,还可以保存包含附件的整个电子邮件,以便在Outlook中打开。(不需要支持其他邮件客户端)

Exchange服务器是
Exchange2010
,应用程序正在
C#

这可以通过EWS实现吗?或者,我的唯一解决方案是使用Interop.Outlook创建.msg文件吗?

您使用的是哪个Outlook版本?Outlook 2010可以打开.EML文件,这是邮件的“本机”存储格式(RFC 2822)。在这种情况下,您可以使用EWS Web服务(或EWS托管API)下载MIME内容


在任何其他情况下,请查看Outlook Redemption(http://www.dimastr.com/redemption/). 它可以将项目另存为.msg文件,并可从C#使用。

大多数人都在使用Outlook 2007(包括我自己),但他们将在不久的将来推出Outlook 2010。谢谢你的提示!我已经对此进行了测试,我们将为一些人提前推出Outlook 2010。这将工作完美,谢谢!我们很幸运地使用Mailbee.NET Converter()将EML转换为MSG。感谢您的评论,我知道我可以导出一个*.EML,但我不清楚Outlook无法正确读取该文件的印象,另请参阅我对Henning Krause答案的评论。
ExchangeService exchangeService = ...
EmailMessage mailMessage = ...

var propertySet = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.MimeContent, EmailMessageSchema.IsRead);

exchangeService.LoadPropertiesForItems(mailMessage, propertySet);

File.WriteBytes("filename.eml", mailMessage.MimeContent.Content);