العمل مع مرفقات الرسالة
إدارة المرفقات باستخدام Aspose Outlook
يوضح إنشاء وحفظ ملفات Outlook Message (MSG) كيفية إنشاء وحفظ الرسائل، وكيفية إنشاء ملفات MSG مع مرفقات. يشرح هذا المقال كيفية إدارة مرفقات Microsoft Outlook باستخدام Aspose.Email. يتم الوصول إلى المرفقات من ملف الرسالة وحفظها على القرص باستخدام خاصية Attachments في فئة MapiMessage. خاصية Attachments هي مجموعة من نوع فئة MapiAttachmentCollection.
تحقق ما إذا كان المرفق مدمجًا أم عاديًا
تشير المرفقات "المضمنة" و "العادية" إلى الطريقة التي يتم تضمينها بها في رسالة البريد الإلكتروني. المرفقات العادية هي الملفات المرفقة بالطريقة التقليدية. عادةً ما تُعرض في قائمة داخل عميل البريد ويمكن للمستلم تنزيلها وحفظها في تخزين محلي. المرفقات المضمنة، المعروفة أيضًا بالمرفقات المدمجة أو الصور المضمنة، تُستخدم عادةً لتضمين صور أو وسائط أخرى داخل نص البريد. لا تُعرض في قائمة منفصلة بل تظهر مباشرة داخل محتوى البريد، مثل جسم الرسالة. يتيح لك ذلك تضمين صور أو وسائط أخرى كجزء من محتوى الرسالة. يوضح مثال الشيفرة أدناه كيفية تحديد ما إذا كان المرفق مضمّنًا أم عادياً:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
for attachment in msg.attachments:
print(f"{attachment.display_name}:{attachment.is_inline}")
حفظ المرفقات من ملف Outlook Message (MSG)
لحفظ المرفقات من ملف MSG:
- قم بالتكرار خلال مجموعة MapiAttachmentCollection واحصل على المرفقات الفردية.
- لحفظ المرفقات، استدعِ طريقة Save() من فئة MapiAttachment.
يوضح مقطع الشيفرة التالي كيفية حفظ المرفقات إلى القرص المحلي.
import aspose.email as ae
data_dir = "C://dataDir/"
file_name = "message.msg"
# Create an instance of MapiMessage from file
message = ae.mapi.MapiMessage.from_file(data_dir + file_name)
# Iterate through the attachments collection
for attachment in message.attachments:
# Save the individual attachment
attachment.save(data_dir + attachment.file_name)
الحصول على مرفقات رسائل البريد المتداخلة
تظهر مرفقات OLE المدمجة أيضًا في مجموعة Attachment الخاصة بفئة MapiMessage. المثال التالي يحلل ملف رسالة لاستخراج مرفقات الرسائل المدمجة ويحفظها على القرص. يمكن للطريقة الساكنة FromProperties() من فئة MapiMessage إنشاء رسالة جديدة من مرفق مدمج. يوضح مقطع الشيفرة التالي كيفية الحصول على مرفقات رسائل البريد المتداخلة.
import aspose.email as ae
eml = ae.mapi.MapiMessage.load("my.msg")
# Create a MapiMessage object from the individual attachment
get_attachment = ae.mapi.MapiMessage.from_properties(eml.attachments[0].object_data.properties)
# Create an object of type MailMessageInterpreter from the above message and save the embedded message to a file on disk
mail_message = get_attachment.to_mail_message(ae.mapi.MailConversionOptions())
mail_message.save("NestedMailMessageAttachments_out.eml", ae.SaveOptions.default_eml)
إزالة مرفقات
توفر مكتبة Aspose Outlook القدرة على إزالة المرفقات من ملفات رسائل Microsoft Outlook (.msg):
- استدعِ طريقة RemoveAttachments(). تأخذ مسار ملف الرسالة كمعامل. تم تنفيذها كطريقة ثابتة عامة، لذا لا تحتاج إلى إنشاء كائن.
يوضح مقطع الشيفرة التالي كيفية إزالة المرفقات.
import aspose.email as ae
ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")
يمكنك أيضًا استدعاء الطريقة الساكنة DestoryAttachment() من فئة MapiMessage. تعمل أسرع من RemoveAttachment()، لأن طريقة RemoveAttachment() تقوم بتحليل ملف الرسالة.
import aspose.email as ae
# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments(data_dir + "AttachmentsToDestroy_out.msg")
إضافة مرفقات MSG
يمكن أن تحتوي رسالة Outlook على رسائل Microsoft Outlook أخرى كمرفقات إما كرسائل عادية أو مدمجة. توفر مجموعة MapiAttachmentCollection أعضاءً مُحمّلة طريقة Add لإنشاء رسائل Outlook مع كلا نوعي المرفقات.
جرّبها!
أضف أو احذف مرفقات البريد الإلكتروني عبر الإنترنت مجانًا باستخدام Aspose.Email Editor App.
إضافة مرفق مرجعي إلى MapiMessage
"مرفق مرجعي" عادةً ما يشير إلى مرفق يحتوي على إشارة أو رابط إلى مورد خارجي بدلاً من الملف فعليًا. تُستخدم هذه الإشارات غالبًا في رسائل HTML لربط صور أو موارد خارجية مستضافة على خادم بعيد. بدلاً من تضمين الملف بالكامل، يتضمن المرفق المرجعي عنوان URL أو إشارة إلى المحتوى الخارجي.
توفر Aspose.Email مجموعة من الأدوات لعرض المرفقات المرجعية بشكل صحيح كما هو موضح في عينة الشيفرة التالية:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
# Add reference attachment
msg.attachments.add("Document.pdf",
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive")
# Also, you can set additional attachment properties
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PERMISSION_TYPE, int(ae.AttachmentPermissionType.ANYONE_CAN_EDIT))
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_ORIGINAL_PERMISSION_TYPE, 0)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_IS_FOLDER, False)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PROVIDER_ENDPOINT_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PREVIEW_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_THUMBNAIL_URL, "")
# Finally save the message
msg.save("msg_with_ref_attach.msg")
إدراج رسالة كمرفق
يوضح مقطع الشيفرة التالي كيف تحتوي ملفات Outlook MSG المدمجة في ملف MSG على خاصية PR_ATTACH_METHOD بقيمة 5.
import aspose.email as ae
# Create a new MapiMessage
message = ae.mapi.MapiMessage("from@test.com", "to@test.com", "Subj", "This is a message body")
# Load the attachment message
attach_msg = ae.mapi.MapiMessage.load("Message.msg")
# Add the attachment to the message
message.attachments.add("Weekly report.msg", attach_msg)
# Save the message with the embedded message attachment
message.save("WithEmbeddedMsg_out.msg")
قراءة الرسائل المدمجة من المرفقات
يوضح مقطع الشيفرة التالي كيفية قراءة رسالة مدمجة من مرفق.
import aspose.email as ae
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.from_file(file_name)
# Check if the first attachment is an Outlook message
if message.attachments[0].object_data.is_outlook_message:
# Get the embedded message as MapiMessage
embedded_message = message.attachments[0].object_data.to_mapi_message()
# Perform further operations with the embedded message
# ...
إدراج المرفقات واستبدالها
توفر Aspose.Email API القدرة على إدراج مرفقات في فهرس محدد داخل الرسالة الأصلية. كما توفر إمكانية استبدال محتوى مرفق بملف مرفق رسالة آخر. يوضح مقطع الشيفرة التالي كيفية إدراج المرفقات واستبدالها.
الإدراج في موقع محدد
توفر Aspose.Email API القدرة على إدراج مرفق MSG إلى MSG رئيسي باستخدام طريقة Insert في MapiAttachmentCollection (MapiAttachmentCollection Insert(int index, string name, MapiMessage msg)). يوضح مقطع الشيفرة التالي كيفية الإدراج في موقع محدد.
import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)
# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)
# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)
# Insert the loaded attachment at index 1
message.attachments.insert(1, "new 11", get_data)
استبدال محتويات المرفق
يمكن استخدام ذلك لاستبدال محتويات المرفقات المدمجة بأخرى جديدة باستخدام طريقة Replace. ومع ذلك، لا يمكن استخدامه لإدراج مرفق برقم PR_ATTACH_NUM = 4 (مثلاً) في مجموعة تحتوي على عدد عناصر collection.Count = 2. يوضح مقطع الشيفرة التالي كيفية استبدال محتويات المرفق.
import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)
# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)
# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)
# Replace the attachment at index 1 with the loaded attachment
message.attachments.replace(1, "new 1", get_data)
إعادة تسمية مرفق في MapiMessage
يمكن تعديل أسماء العرض للمرفقات في رسائل البريد الإلكتروني المحمّلة من ملف. يوضح عينة الشيفرة أدناه كيفية القيام بذلك:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
msg.attachments[0].display_name = "New display name 1"
msg.attachments[1].display_name = "New display name 2"