إدارة ملفات الرسائل باستخدام Aspose.Email.Outlook
تحديد نوع عنصر MAPI في مجلد PST
عادةً ما يحتوي ملف PST على أنواع مختلفة من البيانات، مثل رسائل البريد الإلكتروني، أحداث التقويم، جهات الاتصال، وأكثر. الـ MapiItemType فئة Aspose.Email تتيح لك الوصول وتصنيف أنواع مختلفة من عناصر MAPI داخل ملف PST. الكود أدناه يوضح كيفية تحديد نوع عنصر MAPI في مجلد PST:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("test.pst")
folder = pst.root_folder.get_sub_folder("Calendar")
for messageInfo in folder.enumerate_messages():
msg = pst.extract_message(messageInfo)
# Get the class type based on msg.SupportedType
item_type = msg.supported_type
# Non-supported type. It cannot be accessed as appropriate item type.
if item_type == ae.mapi.MapiItemType.NONE:
print("Item type not supported")
# An email message.
elif item_type == ae.mapi.MapiItemType.MESSAGE:
# You can access to MapiMessage properties there.
# A subject for example
print(msg.subject)
# A contact item. Can be accessed as MapiContact.
elif item_type == ae.mapi.MapiItemType.CONTACT:
contact = msg.to_mapi_message_item()
# You can access to MapiContact properties there.
# A name_info.display_name for example.
print(contact.name_info.display_name)
# A calendar item. Can be accessed as MapiCalendar.
elif item_type == ae.mapi.MapiItemType.CALENDAR:
calendar = msg.to_mapi_message_item()
# You can access to MapiCalendar properties there.
# A location for example.
print(calendar.location)
# A distribution list. Can be accessed as MapiDistributionList.
elif item_type == ae.mapi.MapiItemType.DIST_LIST:
dlist = msg.to_mapi_message_item()
# You can access to MapiDistributionList properties there
# A Journal entry. Can be accessed as MapiJournal.
elif item_type == ae.mapi.MapiItemType.JOURNAL:
journal = msg.to_mapi_message_item()
# You can access to MapiJournal properties there
# A StickyNote. Can be accessed as MapiNote.
elif item_type == ae.mapi.MapiItemType.NOTE:
note = msg.to_mapi_message_item()
# You can access to MapiNote properties there
# A Task item. Can be accessed as MapiTask.
elif item_type == ae.mapi.MapiItemType.TASK:
task = msg.to_mapi_message_item()
# You can access to MapiTask properties there
تحويل MSG إلى رسالة MIME
توفر Aspose.Email API القدرة على تحويل ملف MSG إلى رسالة MIME باستخدام طريقة ToMailMessage.
ضبط مهلة التحويل وتحميل الرسالة
للحد من الوقت بالمللي ثانية لتحويل الرسالة (القيمة الافتراضية 3 ثوانٍ)، خاصية timeout في MailConversionOptions يتم استخدام الفئة.
إليك كيفية ضبط مهلة زمنية لعمليات تحويل الرسائل وتحميلها:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
options = ae.mapi.MailConversionOptions()
options.timeout = 5000
mailMessage = msg.to_mail_message(options)
من خلال ضبط مهلة زمنية لعمليات تحويل الرسائل وتحميلها، يمكنك التحكم في الحد الأقصى للوقت المسموح لهذه العمليات بالتنفيذ. بعد ضبط المهلة، يمكنك المتابعة في عمليات تحويل الرسائل وتحميلها.
معالجة ملفات قالب Outlook (OFT)
تحميل، تعديل، وحفظ ملف OFT
توفر قوالب Outlook (OFT) طريقة مريحة لتبسيط عملية إرسال رسائل بريد إلكتروني متكررة. بدلاً من كتابة نفس البريد من الصفر في كل مرة، يمكنك إنشاء رسالة في Outlook وحفظها كقالب Outlook (OFT). لاحقًا، كلما احتجت لإرسال رسالة مشابهة، يمكنك توليدها بسرعة من القالب. يوفر هذا النهج عليك عناء إعادة كتابة نفس المحتوى في جسم الرسالة، وتحديد سطر الموضوع، والتنسيق، وغيرها.
Aspose.Email’s MailMessage توفر الفئة أداة قوية لتحميل ومعالجة ملفات قالب Outlook (OFT). بمجرد تحميل قالب Outlook إلى كائن من فئة MailMessage، يمكنك بسهولة تحديث خصائص مثل المرسل، المستلم، جسم الرسالة، الموضوع، وغيرها من السمات.
import aspose.email as ae
# Load the OFT file
oft_file_path = "your_template.oft"
mail_message = ae.MailMessage.load(oft_file_path)
# Update properties as needed
mail_message.subject = "Updated Subject"
mail_message.body = "Updated body text."
# Save the updated message as an MSG file
msg_file_path = "updated_message.msg"
mail_message.save(msg_file_path, ae.MailMessageSaveType.outlook_message_format_unicode)
print(f"Updated message saved to {msg_file_path}")
بعد إجراء التحديثات اللازمة، يمكنك إرسال البريد باستخدام SmtpClient فئة:
# Send the email
smtpClient.send(message)
حفظ ملف Outlook MSG كقالب
لهذا الغرض، يمكنك استخدام MailMessage فئة لإنشاء بريد إلكتروني، ثم حفظه كملف OFT. سيُظهر مثال الشيفرة التالي كيفية حفظ بريد إلكتروني كقالب Outlook:
import aspose.email as ae
# Create a new MailMessage
message = ae.MailMessage()
message.subject = "Sample Outlook Template"
message.html_body = "<html><body>This is the body of the email.</body></html>"
message.from_address = ae.MailAddress("your.email@example.com", "Your Name")
# Save the MailMessage as an Outlook Template (OFT) file
oft_file_path = "sample_template.oft"
message.save(oft_file_path, ae.SaveOptions.default_oft)
print(f"Outlook Template saved as {oft_file_path}")
OFT أو MSG: تحديد نوع MapiMessage
يوضح مقطع الشيفرة التالي كيفية تحديد ما إذا كانت رسالة MAPI المحملة تمثل رسالة بريد إلكتروني قياسية أم قالب Outlook (OFT):
msg = ae.mapi.MapiMessage.Load("message.msg");
isOft = msg.is_template # returns false
msg = ae.mapi.MapiMessage.Load("message.oft");
isOft = msg.IsTemplate; # returns true
بعد تحميل ملف MSG، يتحقق الكود مما إذا كانت الخاصية is_template لـ MapiMessaage الفئة إما True أو False. إذا أرجعت false، تكون الرسالة المحمَّلة رسالة بريد إلكتروني عادية، ليست قالب Outlook؛ أما إذا أرجعت true، فبدلاً من رسالة بريد عادية، تكون قالب Outlook.
حفظ MapiMessage أو MailMessage كملف OFT
الـ SaveOptions هي فئة أساسية مجردة للفئات التي تسمح للمستخدم بتحديد خيارات إضافية عند حفظ MailMessage في تنسيق معين. يوضح مثال الشيفرة التالي كيفية حفظ رسالة بصيغة OFT:
import aspose.email as ae
# Save the MailMessage to OFT format
eml = ae.MailMessage.load("message.eml")
eml.save("message.oft", ae.SaveOptions.default_oft)
# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)
# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)
# Save the MapiMessage to OFT format
msg = ae.mapi.MapiMessage.load("message.msg")
msg.save("message.oft", ae.SaveOptions.default_oft)
# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)
# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)
إدارة الرسائل ذات التوقيعات الرقمية
المكتبة توفر الـ LoadOptions فئة، فئة أساسية مجردة للفئات التي تسمح للمستخدم بتحديد خيارات إضافية عند تحميل MailMessage من تنسيق معين. يتم ضبط خيار الحفاظ على التوقيع بشكل افتراضي.
التحويل من EML إلى MSG مع الحفاظ على التوقيع
يعرض مثال الشيفرة أدناه كيفية تحميل رسالة، تحويلها إلى صيغة MSG وحفظها كـ MSG (يتم الحفاظ على التوقيع تلقائيًا):
import aspose.email as ae
# Load mail message
loadOptions = ae.EmlLoadOptions()
message = ae.MailMessage.load("Message.eml", loadOptions)
# Save as MSG
message.save("ConvertEMLToMSG_out.msg", ae.SaveOptions.default_msg_unicode)
تحويل رسائل S/MIME من MSG إلى EML
تتيح لك Aspose.Email تحويل ملفات MSG إلى EML مع الحفاظ على التوقيع الرقمي كما هو موضح في مقتطف الشيفرة التالي.
import aspose.email as ae
# Load mail message
loadOptions = ae.EmlLoadOptions()
smime_eml = ae.MailMessage.load("smime.eml", loadOptions)
conversion_options = ae.mapi.MapiConversionOptions(ae.mapi.OutlookMessageFormat.UNICODE)
msg = ae.mapi.MapiMessage.from_mail_message(smime_eml, conversion_options)
# Save File to disk
msg.save("ConvertMIMEMessagesFromMSGToEML_out.msg")
تعيين فئة اللون لملفات Outlook MSG
في بعض الحالات قد تحتاج إلى تمييز رسائل البريد الإلكتروني ذات الأهمية الخاصة وتنظيمها بصريًا. توفر المكتبة طريقة للقيام بذلك عن طريق تعيين لون محدد لعنصر الرسالة. عند تعيين فئة اللون لعنصر، يتيح لك ذلك التعرف بسهولة على العناصر ذات الصلة وتحديد موقعها بنظرة سريعة. استخدم FollowUpManager فئة لتعيين فئة اللون للرسالة كما في مثال الشيفرة التالي:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Add Two categories
ae.mapi.FollowUpManager.add_category(msg, "Purple Category")
ae.mapi.FollowUpManager.add_category(msg, "Red Category")
# Retrieve the list of available categories
categories = ae.mapi.FollowUpManager.get_categories(msg)
# Remove the specified category and then Clear all categories
ae.mapi.FollowUpManager.remove_category(msg, "Red Category")
ae.mapi.FollowUpManager.clear_categories(msg)
الوصول إلى معلومات المتابعة من ملف MSG
استخراج معلومات إيصال القراءة والتسليم
يوضح مثال الشيفرة أدناه كيفية استخراج معلومات المستلمين وحالة تتبعهم من ملف رسالة Outlook (MSG):
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("received.msg")
for recipient in msg.recipients:
print(f"Recipient: {recipient.display_name}")
print(f"Delivery time: {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_DELIVERY]}")
print(f"Read time: {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_READ]}")
إنشاء رسائل التحويل والرد
توفر Aspose.Email طرقًا بسيطة لإنشاء رسائل رد وإعادة توجيه بناءً على الرسائل الحالية.
إنشاء رسالة تحويل
يمكنك استخدام الـ ForwardMessageBuilder الفئة لإنشاء رسالة إعادة توجيه عن طريق ضبط الرسالة المصدر، المُرسل، المستلمين، العنوان، والنص. رسائل إعادة التوجيه يمكن أن تتضمن الرسالة الأصلية كمرفق أو كنص للرسالة المُعاد توجيهها. لديك المرونة لتخصيص سمات إضافية مثل المرفقات، الرؤوس، وخيارات التنسيق. عينة الشفرة أدناه توضح كيفية إنشاء رسالة إعادة توجيه:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("original.msg")
builder = ae.tools.ForwardMessageBuilder()
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART
forwardMsg = builder.build_response(msg)
forwardMsg.save("forward_out.msg")
إنشاء رسالة رد
الـ ReplyMessageBuilder الفئة تُستخدم لتكوين إعدادات الرد، بما في ذلك الرسالة الأصلية، المُرسل، المستلمين، وضع الرد، بادئة الموضوع، ونص رسالة الرد. يمكن إنشاء رسائل رد بوضعات مختلفة مثل "رد على المرسل" أو "رد على الكل" بناءً على متطلباتك. يمكنك تخصيص سمات مختلفة مثل المرفقات، الرؤوس، وخيارات التنسيق لرسالة الرد. عينة الشفرة أدناه توضح كيفية إنشاء رسالة إعادة توجيه:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("original.msg")
builder = ae.tools.ReplyMessageBuilder()
# Set ReplyMessageBuilder Properties
builder.reply_all = True
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART
builder.response_text = "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>";
replyMsg = builder.build_response(msg)
replyMsg.save("reply_out.msg")