إدارة المرفقات في ملفات Outlook MSG

Aspose.Email for C++ يوفر API غني للوصول إلى المرفقات، حفظها، إزالتها وتضمينها عند العمل مع ملفات Microsoft Outlook MSG. يتم التعامل مع المرفقات عبر MapiMessage فئة، باستخدام Attachments خاصية، التي تكشف عن MapiAttachmentCollection.

حفظ المرفقات من ملف MSG

لاستخراج وحفظ المرفقات من ملف MSG:

  1. تحميل الرسالة باستخدام MapiMessage::Load.
  2. التكرار عبر الـ MapiAttachmentCollection.
  3. احفظ كل مرفق باستخدام MapiAttachment::Save() طريقة.
// Create an instance of MapiMessage from file
System::SharedPtr<MapiMessage> message = MapiMessage::Load(fileName);
    
// Iterate through the attachments collection
    
{
    auto attachment_enumerator = (message->get_Attachments())->GetEnumerator();
    decltype(attachment_enumerator->get_Current()) attachment;
    while (attachment_enumerator->MoveNext() && (attachment = attachment_enumerator->get_Current(), true))
    {
        // Save the individual attachment
        attachment->Save(dataDir + attachment->get_FileName());
    }
}

إزالة المرفقات

Aspose.Email لـ C++ يقدم طريقتين لإزالة المرفقات من ملفات MSG:

تستقبل مسار ملف الرسالة كمعامل. تم تنفيذها كطريقة ثابتة عامة، لذا لا تحتاج إلى إنشاء كائن. هذه الطريقة المساعدة الثابتة تزيل جميع المرفقات من ملف الرسالة.

يعرض مقتطف الشيفرة التالي كيفية استخدام هذه الطريقة.

يعمل بشكل أسرع لأنه يزيل المرفقات دون تحليل كامل لملف MSG.

إضافة مرفقات MSG

يمكن أن تحتوي ملفات MSG على ملفات MSG أخرى إما كمرفقات قياسية أو مضمَّنة. استخدم النسخة المتعددة الأشكال من Add طرق في MapiAttachmentCollection لتضمين رسائل Outlook.

يعرض مثال الشيفرة التالي كيفية إنشاء رسالة MAPI جديدة مع المُرسل، المستلم، الموضوع، والنص المحددين، ثم إرفاق ملف MSG موجود كرسالة مضمَّنة، وأخيرًا حفظ الرسالة الناتجة مع المرفق المضمَّن إلى ملف MSG جديد.

System::SharedPtr<MapiMessage> message = System::MakeObject<MapiMessage>(L"from@test.com", L"to@test.com", L"Subj", L"This is a message body");
System::SharedPtr<MapiMessage> attachMsg = MapiMessage::Load(L"Message.msg");
message->get_Attachments()->Add(L"Weekly report.msg", attachMsg);
message->Save(dataDir + L"WithEmbeddedMsg_out.msg");