[英]C# Save email message as .msg file
以下方法将Microsoft.Exchange.WebServices.Data.EmailMessage
类型的 object 保存在磁盘上
private void SaveMailOnDisk(Microsoft.Exchange.WebServices.Data.EmailMessage email, string pathLocation)
{
FileStream fs = null;
BinaryWriter sw = null;
try
{
email.Load(new PropertySet(ItemSchema.MimeContent));
MimeContent mc = email.MimeContent;
fs = new FileStream(pathLocation, FileMode.Create);
// mc.CharacterSet Is UTF8
sw = new BinaryWriter(fs, System.Text.Encoding.UTF8);
sw.Write(mc.Content, 0, mc.Content.Length);
sw.Flush();
}
catch { }
finally
{
sw?.Close();
fs?.Close();
}
}
该文件已成功保存在磁盘上,但是当我尝试使用Outlook 2016
打开它时,我收到以下错误:
我们无法打开 msg 文件的路径。 文件可能已经打开,或者您没有打开它的权限
有没有办法将它作为.msg
文件保存在磁盘上。 我提到此方法适用于.eml
文件,但我需要.msg
格式。
请记住,MIME 格式不是 Exchange 的本机格式,如果将 Exchange 项目转换为 MIME (EML) 格式,您可能会丢失特定于 MAPI 的属性。
话虽如此,Outlook 很乐意像打开 MSG 文件一样轻松地打开 EML 文件,因此将 EML 转换为 MSG 不会获得任何好处。
如果要保留所有 MAP 特定属性,则需要使用快速传输 Stream 格式 (FTS) 导出 - 这是ExportItems
EWS 操作生成的格式(请参阅https://docs.microsoft.com/en- us/exchange/client-developer/web-service-reference/exportitems-operation和https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-export-使用 ews-in-exchange 的项目)
FTS 格式保留所有 MAPI 属性,但未记录其内部结构。 如果要将 FTS 数据转换为 MSG 文件,可以使用Redemption (我是它的作者)来实现 - 创建RDOSession object 的实例,调用RDOSession.CreateMessageFromMsgFile
来创建新的 MSG 文件,调用RDOMail.Import(..., olFts)
导入 FTS 数据,然后调用RDOMail.Save
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.