我在 ColdFusion [2023] 中有一个流程,可以获取 .msg 文件(Microsoft 电子邮件)的内容,以便我可以使用所述内容创建该消息的 PDF 版本。这个过程在过去两年多里一直运行良好。我使用了 stackoverflow 中以下接受的答案中的代码:ColdFusion:从 .msg 文件中提取信息。
截至昨天(据我们所知,因为系统的这一部分并不是每天使用的),该过程已停止工作,因为它出错了。我正在使用 Java POI 对象来访问 MAPIMessage 对象。这条线...
MAPIMessage = createObject("java", "org.apache.poi.hsmf.MAPIMessage");
..产生以下错误:
org.apache.poi.POIReadOnlyDocument not found by poi [93]
有人对可能发生的情况或如何调查该问题有任何想法吗?我可以通过 POI 对象访问其他对象。例如,我能够执行
<cfset MAPIMessage = createObject("java", "org.apache.poi.POIDocument")>
在查看
cfdump
时会返回方法列表。
我们的 CF 管理员不在,但一旦有空,我会与他联系,看看 CF 服务器最近是否有更新。此问题发生在我们的开发、测试和生产服务器上。我们在夏天升级到了 CF2023,最终用户告诉我,他们最近使用了应用程序的这一部分,尽管我并不完全排除升级是罪魁祸首。
我愿意以不同的方式做到这一点,但这需要通过 ColdFusion。我的想法是应该有一种方法使用 CFPDF / DDX 将 .msg 转换为 PDF,但我没有看到任何有关如何执行此操作的文档。
事实证明,[servername]\lib 文件夹中缺少支持的
poi jar
文件。 jar 文件是:
poi-3.17
poi-contrib
poi-ooxml-3.17
poi-ooxml-schemas-3.17
poi-scratchpad
poi-scratchpad-3.17
我只是确定这些文件是否是 2018 年初始安装的一部分,而不包含在 2023 年中;或者如果我们在 2018 年单独安装它们并且忘记了我们做了什么。不管怎样,这似乎已经解决了问题。
请注意,可能有更新版本的 poi 可用。