Извлечение данных вложенных объектов

Иногда встроенные 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));
        }
    }
}