我想创建一个应用程序,其中用户将.msg文件拖入我的Web应用程序中。然后,ColdFusion会提取以下字段:名称,发件人电子邮件,主题等,并将其预填充为可供提交的表单。我已经使用“读取.msg ColdFusion”,但似乎无法找到任何信息。当我执行FileRead()
时,我只看到乱码ÐÏࡱá > þÿ
,因为它是加密的。这甚至有可能吗?我希望有人能指出我正确的方向。我也愿意尝试不同的方法。ColdFusion:从.msg文件中提取信息
回答
正如@imthepitts提到的那样,文件没有加密,只是二进制文件。但是,仅用fileReadBinary()
加载字节是不够的。您需要一个能够理解format of .msg files的工具,并且可以解析其内容。
如果你做一个快速搜索,有一堆工具能够解析.msg文件(大部分是java或.net)。一个这样的工具是POI's HSMF (Horrible Stupid Mail Format)。它已经内置于CF.所以你可能想从那里开始。
下面是一个快速和肮脏的例子来自HSMF examples翻译:
<cfscript>
pathToFile = "c:/path/to/someMessage.msg";
MAPIMessage = createObject("java", "org.apache.poi.hsmf.MAPIMessage");
message = MAPIMessage.init(pathToFile);
try {
WriteOutput("From: "& message.getDisplayFrom() &"<hr>");
WriteOutput("To: "& message.getDisplayTo() &"<hr>");
WriteOutput("CC: "& message.getDisplayCC() &"<hr>");
WriteOutput("BCC: "& message.getDisplayBCC() &"<hr>");
WriteOutput("Subject: "& message.getSubject() &"<hr>");
WriteOutput("Body: "& message.getTextBody() &"<hr>");
} catch (org.apache.poi.hsmf.exceptions.ChunkNotFoundException e) {
WriteDump(e);
}
</cfscript>
FileRead()
用于文本文件。如果你看到乱码,那是因为它是一个二进制文件。尝试FileReadBinary()
。
我得到'复杂的对象类型不能转换为简单values.' – isurfbecause 2013-05-10 00:58:23
你能发布一些代码吗?你确定你正在传递一个字符串到函数中吗? – imthepitts 2013-05-10 01:32:39
我的代码基本上是'FileReadBinary(“upload/mail.msg”)'.msg是某种加密的outlook邮件文件。 – isurfbecause 2013-05-10 01:36:58
- 1. 从SSIS XML文件中提取信息?
- 2. 从HTML文件中提取信息
- 3. 从Global.ascx文件中提取信息
- 4. 如何从文件中提取信息
- 5. 从文件中提取信息
- 6. 从文件中提取信息
- 7. 从prop文件中提取信息
- 8. Powershell,从文本文件提取信息
- 9. 从.MSG附件中获取邮件项目详细信息
- 10. 从mongoDB中提取信息
- 11. 从xml中提取信息
- 12. 从dictionary.description中提取信息?
- 13. 从XML中提取信息
- 14. 从api中提取信息
- 15. 从array_count_values中提取信息
- 16. 从DTD中提取信息
- 17. 从XCUIElement中提取信息
- 18. 从$中提取信息?
- 19. 从xml中提取信息
- 20. 从文本中提取特定信息
- 21. 从MS Word中提取文本信息
- 22. 从网页中提取文本信息
- 23. 如何使用Powershell从.msg文件中提取邮件标题?
- 24. 如何从msg文件中提取附件
- 25. 从树中提取的信息结构化文本文件
- 26. 强制iMacro从文本文件或Excel中提取信息?
- 27. 从非常规文本文件中提取信息? (Python)
- 28. 使用Perl从文本文件中提取信息
- 29. 从大型结构化文本文件中提取信息
- 30. 从窗口的.evtx文件中提取审计事件信息
嗨,谢谢你帮助我。我也想知道消息何时发送,所以我尝试了'getMessageDate()',但它给了我一个错误的日期。例如,昨天发送的邮件'getMessageDate()'今天会返回一个日期。任何煽动? – isurfbecause 2013-05-10 22:35:36
我在CF10中看不到这种方法。你正在加载更新版本的POI吗?只是猜测,但也许它不能解析日期,只是今天回落。有*可能*在CF日志文件的某处出现错误消息(取决于POI版本...),但您可能需要检查。 – Leigh 2013-05-11 00:42:09