التمييز بين المرفقات المضمنة والعادية

هذا سيناريو شائع حيث قد يحتوي رسالة بريد إلكتروني على صور مضمَّنة داخل جسمها وكذلك مرفقات عادية مرتبطة بها. باستخدام MailMessage فئة، ويمكن استخراج المرفقات المضمنة من الـ LinkedResourceCollection فئة، بينما يمكن الوصول إلى المرفقات العادية/استخراجها باستخدام الـ AttachmentCollection فئة رسالة. لكن الأمر يختلف عندما يتم تحميل الرسالة باستخدام فئة Aspose.Email.Mapi.MapiMessage، حيث تكون جميع الصور المضمنة والمرفقات العادية متاحة للمستخدم في نفس الفئة MapiAttachmentCollection. لذلك يلزم وضع طريقة يمكنها التمييز بين مرفق مضمّن وآخر عادي عند استعمال MapiMessage.

استخدام Aspose.Email للتمييز بين المرفقات المضمنة والعادية

تشرح هذه المقالة كيفية التمييز بين المرفقات المضمنة والعادية باستخدام MapiMessage. لتحديد هذا الاختلاف، يُؤخذ نوع جسم MapiMessage في الاعتبار كما يلي:

جسم نص عادي: لا يلزم فحص رسائل البريد الإلكتروني التي لها جسم نص عادي، حيث أن جميع المرفقات في مثل هذه الرسائل دائمًا مرفقات عادية.

جسم Html: في حالة رسالة ذات نوع جسم HTML، يجب أن يحتوي المرفق على الخاصية PR_ATTACH_FLAGS (0x37140003) ويجب أن تكون قيمتها 0x00000004 للمرفقات المضمَّنة. إذا تحقق هذا الشرط، يعتمد الأمر بعد ذلك على وسوم PR_ATTACH_CONTENT_LOCATION و PR_ATTACH_CONTENT_ID لتحديد طبيعة المرفق. ومع ذلك، في غياب وسمة Mapi PR_ATTACH_FLAGS، يُفحص المرفق للخاصية PR_ATTACH_DISPOSITION (0x3716001F أو 0x3716001E) لتحديد نوع المرفق.

جسم Rtf: إذا كان الجسم RTF، فإن جميع مرفقات OLE تكون مرفقات مضمَّنة. قيمة PR_ATTACH_METHOD لجميع مرفقات OLE تساوي 0x00000006.

يظهر المقتطف البرمجي التالي كيفية التمييز برمجياً بين المرفقات المضمنة والعادية. تأخذ الدالة IsInlineAttachment مرفقًا ونوع جسم الرسالة كمعاملات إدخال وتُعيد true إذا كان المرفق مضمَّنًا.