我正在使用VC / ATL编写Outlook Addin。此特定插件会选择所选的电子邮件并将其写入磁盘。它还将所有关联的附件写入磁盘。然后,我们在Outlook之外的应用程序中读取所有内容。
使用Outlook对象模型,这非常简单,因为_MailItem和Attachment都有SaveAs方法。 当附件是嵌入式电子邮件本身时会出现问题,我们也希望将其拆分并保存为单个文件。
在理想的世界中,我可以查询_MailItem接口的附件,并像处理选择的正常部分一样处理它。但是QueryInterface返回“无接口”。
我需要一个可以通过Outlook 2010与Outlook XP(2002)配合使用的解决方案。我知道在Outlook 2007中,应用程序对象上有一个方法(CreateItemFromTemplate),它允许我从磁盘上保存的消息中获取MailItem ,但这对Outlook XP / 2003不起作用。我还需要完整的发件人/收件人信息。
我也知道第三方Redemption库可以使用扩展MAPI执行此操作。但是,我们正试图避免使用第三方库。
答案 0 :(得分:2)
如果您不想使用第三方库,那么您可能必须编写自己的MSG文件解析器来提取嵌入的邮件项目。
除此之外,如果你真的认真开发Outlook插件,那么无论如何你迟早会使用Redemption,所以为什么要等?绝对 的价值超过了作者的黄金权重。