استخراج بيانات الكائنات المدمجة

أحيانًا يتم تمثيل بيانات 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:

// 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));
        }
    }
}