Извлечение данных встроенных объектов
Иногда данные встроенных OLE представляются в виде вложения “oleData.mso” через MapiAttachment и требуют ручного извлечения. Эти файлы oleData.mso имеют формат Microsoft Computer Document File (MCDF), и поддержка таких файлов выходит за рамки возможностей Aspose.Email. Однако Aspose.Email можно использовать в комбинации с другими библиотеками с открытым исходным кодом, такими как OpenMCDF, для чтения содержимого таких файлов для сохранения на диск. Aspose.Email предоставляет класс InlineAttachmentExtractor для перечисления MSO-пакетов из двоичных данных oledata.mso, которые затем могут быть использованы для извлечения содержимого библиотеками для чтения составных файлов.
Если тип тела сообщения — HTML (не RTF), и в сообщении есть OLE-объекты, свойство MapiPropertyTag.PR_ATTACH_DATA_OBJ отсутствует. В этом случае информация об OLE-объектах содержится в oldedata.mso.
Извлечение встроенных объектов
В этой статье показано, как извлечь содержимое из такого файла, используя Aspose.Email:
// Путь к директории файлов 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()) { // Используйте двоичные данные processBynaryData(oledata.get_Item(oleItem)); } } }