我正试图从.msg
转换为.eml
文件格式使用Aspose.Email for .NET。很琐碎:.msg到.eml文件使用Aspose.Email缺少日历数据
var msg = MapiMessage.FromFile(@"example.msg");
MailMessageInterpretor mmi = MailMessageInterpretorFactory.Instance.GetIntepretor(msg.MessageClass);
MailMessage eml = mmi.Interpret(msg);
eml.Save(@"example.eml");
如果其日历邀请,我看到它在.msg
文件,并在.eml
文件,如下图所示(在底部.msg
顶部,.eml
):
它还包括.eml
内会议.ics
文件时,它产生:
内容类型:文字/日历;方法= “REQUEST”; NAME = “meeting.ics的”; 的charset = “UTF-8” 内容传输编码:的base64
然而,问题是,如果它是一个会议取消,而不是一个邀请:
由此产生的.eml
如您所见,不包含包含会议详细信息,也不会产生.eml
包含会议的任何跟踪.ics
(其中确实存在于.msg
中)。我可以很容易地解析.msg
它:
MapiCalendar calendar = (MapiCalendar)msg.ToMapiMessageItem();
为什么不碱基64在所得.eml
编码.ics
用于取消?难道我做错了什么?这是一个Aspose错误吗?这是正常的行为吗?这里发生了什么?
对不起,我没有在论坛上的帐户。然而,再现步骤非常简单。 ** 1。**在Exchange上向某人发送会议请求。 ** 2。**在交易所上向该人发送会议取消通知。 ** 3。让该人保存会议取消电子邮件(双击Exchange中的电子邮件,转到文件,然后另存为,它将保存为'.msg'格式)。 ** 4.使用我上面的'.msg'文件中的代码将它转换为'.eml',你会发现它不会保留日历取消(在最新版本的* Aspose.Email *上进行测试) * *的NuGet)。 – Alexandru
请尝试InterpretAsTnef。虽然它也应该与Interpret一起工作,但它似乎是API的一个问题。我们正在调查这个问题,但是,您可以同时使用InterpretAsTnef。 您可以在www.Aspose.com上免费注册。无论是付费用户还是非付费用户,我们的基本支持都是免费的。 –
InterpretAsTnef似乎工作,谢谢。 – Alexandru