ColdFusion:从.msg文件中提取信息

时间:2013-05-10 00:39:50

标签: coldfusion coldfusion-9

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

2 个答案:

答案 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()