繁体   English   中英

使用 EWS 将 EML 转换为 MSG c#

[英]Convert EML to MSG c# Using EWS

我需要有关使用 Outlook Web 加载项中的 Exchange Web 服务 (EWS) 将 EML 转换为 MSG 的帮助。 当我从 MimeContent (EmailMessage.MimeContent.Content) 创建 EML 文件时,文件输出看起来很糟糕,某些标签当前未转换。 这些文件仅从 Windows 邮件应用程序打开良好,但从 Ooutlook(2016) 看起来很糟糕。

我试图从 Microsoft 找到一些解决方案,并找到了这个 Independentsoft,一个第三方解决方案,而且效果很好。 该文件看起来不错,而格式为 MSG。 但它是为客户提供广泛的许可证解决方案(使用 30 天演示)。 这是我使用并运行良好的方法,并尝试找到这样的东西:

//1.This code use the EWS mimeContent(the message on bytes - eml format)
//2.Create Independentsoft message object 
//Independentsoft.Msg.Message constractor do the convert by
// making an msg object from an eml object.
//3. save the msg file.
Independentsoft.Email.Mime.Message mimeMessage = new Independentsoft.Email.Mime.Message(emailMessage.MimeContent.Content);
Independentsoft.Msg.Message msgMessage = Independentsoft.Msg.Message(mimeMessage);
using (MemoryStream memStream = new MemoryStream(emailMessage.MimeContent.Content.Length))
{
    Directory.CreateDirectory(TempMsgDirectory);    
    msgMessage.Save(TempMsgDirectory + "mail.msg", true);
}

我不知道显示 EML 文件有任何 Outlook 问题。 它使用用于解析传入 POP3/IMAP4 消息的相同 EML 解析器。 请发布 Outlook 无法正确显示的特定 EML 文件。

至于将 EML 文件转换为 MSG,您还可以使用Redemption及其RDOSession CreateMessageFromMsgFIleRDOMMail Import方法。 请记住,它需要存在 MAPI 系统才能正常运行,这意味着 Outlook 必须在本地安装。

在我的头顶:

RDOSession session = new RDOSession();
RDOMail msg = session.CreateMessageFromMsgFile(TempMsgDirectory + "mail.msg");
msg.Import(TempMsgDirectory + "YouEmlFile.eml", rdoSaveAsType.olRFC822);
msg.Save();

还要记住,从 Exchange 检索 MIME 内容可能不是最好的主意 - 如果原始邮件是 RTF 格式(有或没有嵌入的 OLE 对象),您将丢失所有 MAPI 特定属性,并且最终会收到损坏的邮件。 在这种情况下,您可以使用ExportItems EWS 操作。 它的格式没有记录,但它非常接近 MSG 格式,您可以使用类似于上面的代码将其转换为 MSG,但指定 olFTS 格式而不是 olRFC822。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM