java - Apache POI HSMF 从 MSG 中提取 HTML 正文不起作用

标签 java outlook apache-poi mapi msg

[使用 POI 3.13 20150929 以及 Apache Tika 1.10 jar 中包含的(旧)版本进行测试。]

我有带有 HTML 正文(包括嵌入图像)的 Outlook MSG 文件。

从 MSG 文件创建 HSMF MAPIMessage 成功,并且大多数信息可用(主题、发件人等),但 getHtmlBody() 始终返回 null。

对于通过使用 HTML 正文格式选项在 Outlook 中构造邮件并将其另存为 MSG 所创建的 MSG 文件以及从 Thunderbird 以 mime/multipart/mixed/related/etc 发送的邮件来说,都是如此。并由 Outlook 接收。 Outlook Spy 在 _MailItem View 中显示正确的 HTML 正文属性,以及 BodyFormat 属性 2 (olFormatHTML)。实际提取的 RTF(通过 getRtfBody)以 {\rtf1\ansi\ansicpg1252\fromhtml1 开头。

MAPIMessage 的主 block 和主 block 属性的转储显示了 PR_BODYPR_RTF_COMPRESSED 的 block ,但没有 PR_BODY_HTML。附件似乎是正确的:PR_ATTACH_FLAGS=4(对于嵌入附件)、PR_ATTACH_CONTENT_ID 已设置、PR_ATTACH_MIME_TAGPR_ATTACH_LONG_FILENAME、等等

也许我在这里有一个根本性的误解,因为 Outlook Spy 的 _MailItem 接口(interface)还包含一个 MAPIOBJECT,它似乎没有 HTML 正文,也没有任何正文格式。

有什么建议吗? MSG 文件显然包含 HTML 正文。 HSMF 不会公开整个 MSG 文件吗?

提前致谢。

最佳答案

MSG 文件通常不包含 PR_HTML 属性。 HTML 在 PR_RTF_COMPRESSED 属性内进行编码。

关于java - Apache POI HSMF 从 MSG 中提取 HTML 正文不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158950/

相关文章:

java - 自定义布局绘制 Canvas 失败

html - Outlook 2007 图像对齐问题

vba - 对象所需的 VBA Outlook

java - 如何使用 POI API 获取一个 Excel 工作表的完整行并检查该行是否存在于另一张工作表中?

java泛型和继承问题

Java:根据用户输入将变量分配给数组

带有 Outlook 365 的 HTML/CSS 电子邮件 - 无法让 "list-style:none;"与元素符号列表一起使用

java - 如何使用 HSSFFont 以十进制数设置字体

java - POI-XSSF : cell type is FORMULA, 但无法获取cachedResultType

java - 如何使用 eclipse Google 应用引擎让 .jsp 调用方法