Видобування даних вбудованих об’єктів

Іноді вбудовані OLE-дані представляються у вигляді вкладення "oleData.mso" за MapiAttachment і потребує ручного видобутку. Ці файли oleData.mso мають формат Microsoft Computer Document File (MCDF), і підтримка таких файлів виходить за межі можливостей Aspose.Email. Однак Aspose.Email можна використовувати в комбінації з іншими open-source бібліотеками, такими як OpenMCDF, для читання вмісту таких файлів і збереження їх на диск. Aspose.Email надає InlineAttachmentExtractor клас для перелічення MSO‑пакетів з бінарних даних oledata.mso, які потім можна використовувати для видобування вмісту за допомогою бібліотек читання Compound Files.

Якщо тип тіла листа — 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));
        }
    }
}