Extraktion av inbäddade objekts data

Ibland representeras inbäddad OLE-data som "oleData.mso"-bilaga av MapiAttachment och måste extraheras manuellt. Dessa oleData.mso-filer är i Microsoft Computer Document File (MCDF)-format och stöd för sådana filer ligger utanför Aspose.Email:s ansvarsområde. Dock kan Aspose.Email användas i kombination med andra öppna källkods‑bibliotek, såsom OpenMCDF, för att läsa innehållet i sådana filer för att spara på disk. Aspose.Email tillhandahåller den InlineAttachmentExtractor klass för att enumerera MSO‑paket från den binära datan i oledata.mso, som sedan kan användas för att extrahera innehåll med bibliotek som läser Compound Files.

Om meddelandekroppstypen är HTML (inte RTF) och det finns OLE‑objekt i ett meddelande, saknas egenskapen MapiPropertyTag.PR_ATTACH_DATA_OBJ. I detta fall finns informationen om OLE‑objekt i oldedata.mso.

Extraktion av inbäddade objekt

Denna artikel visar hur man extraherar innehållet från en sådan fil med 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));
        }
    }
}