是否可以使用 OLE 将 Outlook .msg 嵌入到应用程序中?
Posted
技术标签:
【中文标题】是否可以使用 OLE 将 Outlook .msg 嵌入到应用程序中?【英文标题】:Is it possible to embed an Outlook .msg into an application using OLE? 【发布时间】:2021-10-02 19:28:54 【问题描述】:如果您有一些带有普通HWND
的应用程序,是否可以使用OLE
将Outlook 电子邮件.msg
文件嵌入到窗口中?
看来,使用OpenSharedItem
打开 Outlook 邮件后,您可以成功地将QueryInterface
换成IOleObject
。但在那之后,我似乎无法成功调用任何IOleObject
方法。
感谢您的任何意见。
【问题讨论】:
你的最终目标是什么? 显示 Outlook .msg 预览。但如果可能的话,我想避免用MAPI
解析它。
正如我在答案中所写,MSG 文件格式在 MSDN 中得到了很好的描述。无需使用 MAPI 解析。
【参考方案1】:
MSG file format 在 MSDN 中有很好的描述。因此,您可以在没有任何第三方组件或接口的情况下阅读内容。要显示内容(我猜是消息正文),您可以使用任何 Web 浏览器(例如,WebView2)。消息正文 (htmlBody) 由常规网页表示。很可能您还需要在正文中使用的附加文件。
使用扩展 MAPI 获取项目属性的另一种可能替代方法。例如,您可以使用任何第三方组件来简化工作 - Redemption。
【讨论】:
“所以,你可以在没有任何第三方组件或接口的情况下阅读内容。” - 我怀疑这是否准确。该规范有 38 页,这甚至不包括 CFB(另外还有 46 页)。虽然您可以实现这两种协议,但这绝对不是您想要做的事情。任何一个都有成百上千的机会来弄错一个微小的细节。不要期望在不到 3 个月的时间内获得强大的解析器。 另一种没有如此详细文档的替代方法是使用我在帖子中也提到的扩展 MAPI。例如,您可以使用 Redemption 让代码在不到一小时的时间内运行!以上是关于是否可以使用 OLE 将 Outlook .msg 嵌入到应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Outlook中使用OLE在前面(而不是在背景上)显示新的电子邮件表单?
使用ColdFusion从Outlook .msg文件中提取附件