3

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

4

2 回答 2

7

正如@imthepitts 提到的,该文件没有加密,它只是二进制文件。然而,仅仅加载字节是不够的fileReadBinary()。您需要一个能够理解.msg 文件格式并能够解析其内容的工具。

如果您进行快速搜索,有很多工具能够解析 .msg 文件(大多数是 java 或 .net)。一种这样的工具是POI 的 HSMF(可怕的愚蠢邮件格式)。它已经内置在 CF 中。所以你可能想从那里开始。

这是一个从HSMF 示例翻译而来的快速而肮脏的示例:

<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>
于 2013-05-10T02:17:59.187 回答
1

FileRead()用于文本文件。如果您看到乱码,那是因为它是一个二进制文件。试试FileReadBinary()

于 2013-05-10T00:55:46.693 回答