嵌入对象数据的提取

有时嵌入的 OLE 数据会被表示为 "oleData.mso" 附件,由 MapiAttachment 并且需要手动提取。这些 oleData.mso 文件是 Microsoft Computer Document File(MCDF)格式,Aspose.Email 并不负责此类文件的支持。然而,Aspose.Email 可以与其他开源库(如 OpenMCDF)结合使用,以读取这些文件的内容并保存到磁盘。Aspose.Email 提供了 InlineAttachmentExtractor 用于从 oledata.mso 的二进制数据枚举 MSO 包的类,可由复合文件读取库用于提取内容。

如果消息正文类型为 HTML(非 RTF),且消息中包含 OLE 对象,则不存在 MapiPropertyTag.PR_ATTACH_DATA_OBJ 属性。在这种情况下,OLE 对象的信息包含在 oldedata.mso 中。

嵌入对象的提取

本文展示了如何使用 Aspose.Email 提取此类文件的内容:

// The path to the File directory
String dataDir = "/data";

MapiMessage msg = MapiMessage.fromFile(dataDir + "double.msg");
for (MapiAttachment mapiAttachment : msg.getAttachments()) {
    if ("oledata.mso".equals(mapiAttachment.getLongFileName())) {
        IGenericDictionary<String, byte[]> oledata = InlineAttachmentExtractor.enumerateMsoPackage(new ByteArrayInputStream(mapiAttachment.getBinaryData()));

        for (String oleItem : oledata.getKeys()) {
            // Use binary data
            processBynaryData(oledata.get_Item(oleItem));
        }
    }
}