我想创建一个应用程序,用户将.msg文件拖入我的Web应用程序。然后,ColdFusion将提取以下字段:名称,发件人电子邮件,主题等,并将其预填充到准备提交的表单中。我用google搜索“读取.msg ColdFusion”但似乎无法找到任何信息。当我执行FileRead()
时,我只会看到乱码ÐÏࡱá > þÿ
,因为它已加密。这甚至可能吗?我希望有人能指出我正确的方向。我也愿意尝试不同的方法。
答案 0 :(得分:7)
正如@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>
答案 1 :(得分:1)
FileRead()
用于文本文件。如果您看到乱码,那是因为它是一个二进制文件。试试FileReadBinary()
。