Извлечение данных встроенных объектов
Иногда данные встроенных 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));
}
}
}