2016-07-07 85 views
0

我正试图从.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):

enter image description here

它还包括.eml内会议.ics文件时,它产生:

内容类型:文字/日历;方法= “REQUEST”; NAME = “meeting.ics的”; 的charset = “UTF-8” 内容传输编码:的base64

然而,问题是,如果它是一个会议取消,而不是一个邀请:

enter image description here

由此产生的.eml如您所见,不包含包含会议详细信息,也不会产生.eml包含会议的任何跟踪.ics(其中确实存在于.msg中)。我可以很容易地解析.msg它:

MapiCalendar calendar = (MapiCalendar)msg.ToMapiMessageItem(); 

为什么不碱基64在所得.eml编码.ics用于取消?难道我做错了什么?这是一个Aspose错误吗?这是正常的行为吗?这里发生了什么?

回答

1

请您分享一下我们的输入/输出文件Aspose.Email forum?我们需要了解您采取了哪些措施来提出这个问题,并会进一步帮助您参加论坛。如果我们发现它是API的错误,我们会将其记录下来供我们的产品团队调查。

我使用Aspose作为Developer Evangelist。

编辑

请尝试mmi.InterpretAsTnef(msg)。虽然它也应该与Interpret一起工作,但它似乎是API的一个问题。我们正在调查这个问题,但是,您可以同时使用InterpretAsTnef。您可以免费在www.Aspose.com上注册。无论是付费用户还是非付费用户,我们的基本支持都是免费的。

+0

对不起,我没有在论坛上的帐户。然而,再现步骤非常简单。 ** 1。**在Exchange上向某人发送会议请求。 ** 2。**在交易所上向该人发送会议取消通知。 ** 3。让该人保存会议取消电子邮件(双击Exchange中的电子邮件,转到文件,然后另存为,它将保存为'.msg'格式)。 ** 4.使用我上面的'.msg'文件中的代码将它转换为'.eml',你会发现它不会保留日历取消(在最新版本的* Aspose.Email *上进行测试) * *的NuGet)。 – Alexandru

+1

请尝试InterpretAsTnef。虽然它也应该与Interpret一起工作,但它似乎是API的一个问题。我们正在调查这个问题,但是,您可以同时使用InterpretAsTnef。 您可以在www.Aspose.com上免费注册。无论是付费用户还是非付费用户,我们的基本支持都是免费的。 –

+0

InterpretAsTnef似乎工作,谢谢。 – Alexandru