[使用 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_BODY
和 PR_RTF_COMPRESSED
的 block ,但没有 PR_BODY_HTML
。附件似乎是正确的:PR_ATTACH_FLAGS=4
(对于嵌入附件)、PR_ATTACH_CONTENT_ID
已设置、PR_ATTACH_MIME_TAG
、PR_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/