تحميل وحفظ وتحويل رسائل البريد الإلكتروني
اكتشاف صيغ ملفات البريد الإلكتروني
توفر Aspose.Email API القدرة على اكتشاف تنسيق ملف الرسالة المقدم. الـ DetectFileFormat طريقة من FileFormatUtil يمكن استخدام الفئة لتحقيق ذلك. يمكن استخدام الفئات والطرق التالية لاكتشاف تنسيق الملف المحمَّل:
- تعداد FileFormatType
- فئة FileFormatInfo
- فئة FileFormatUtil
- طريقة detect_file_format(stream)
- طريقة detect_file_format(file_path)
يوضح مقطع الكود التالي كيفية اكتشاف صيغ الملفات:
from aspose.email.tools import FileFormatUtil
# Detect file format and get the detected load format
info = FileFormatUtil.detect_file_format(data_dir + "message.msg")
print("The message format is: " + str(info.file_format_type))
تحميل رسالة مع خيارات التحميل
يوضح مقطع الكود التالي كيفية تحميل رسالة مع خيارات التحميل.
from aspose.email import MailMessage, EmlLoadOptions, HtmlLoadOptions, MhtmlLoadOptions, MsgLoadOptions
# Load Eml, html, mhtml, msg, and dat files
mail_message = MailMessage.load(data_dir + "message.eml", EmlLoadOptions())
MailMessage.load(data_dir + "description.html", HtmlLoadOptions())
MailMessage.load(data_dir + "message.mhtml", MhtmlLoadOptions())
MailMessage.load(data_dir + "message.msg", MsgLoadOptions())
# Loading with custom options
eml_load_options = EmlLoadOptions()
eml_load_options.preferred_text_encoding = "utf-8"
eml_load_options.preserve_tnef_attachments = True
MailMessage.load(data_dir + "description.html", eml_load_options)
html_load_options = HtmlLoadOptions()
html_load_options.preferred_text_encoding = "utf-8"
html_load_options.should_add_plain_text_view = True
html_load_options.path_to_resources = data_dir
MailMessage.load(data_dir + "description.html", html_load_options)
الحفاظ على صيغة الرسالة المضمنة أثناء التحميل
from aspose.email import MailMessage, EmlLoadOptions, HtmlLoadOptions, MhtmlLoadOptions, MsgLoadOptions
from aspose.email.tools import FileFormatUtil
eml_load_options = EmlLoadOptions()
eml_load_options.preserve_embedded_message_format = True
mail = MailMessage.load(data_dir + "message.eml", eml_load_options)
file_format = FileFormatUtil.detect_file_format(mail.attachments[0].content_stream).file_format_type
print("Embedded message file format: " + str(file_format))
حفظ وتحويل رسائل البريد الإلكتروني
تسهل Aspose.Email تحويل أي نوع من الرسائل إلى صيغة أخرى. لإظهار هذه الميزة، يحمل الكود في هذا المقال ثلاثة أنواع من الرسائل من القرص ويحفظها بصيغ أخرى. الفئة الأساسية SaveOptions والفئات EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions يمكن استخدامها لإعدادات إضافية عند حفظ الرسائل إلى صيغ أخرى. يظهر المقال كيفية استخدام هذه الفئات لحفظ بريد إلكتروني نموذجي كـ
- صيغة EML.
- ملف Outlook MSG.
- صيغة MHTML.
- صيغة HTML.
الحفظ كملف EML
يوضح مقطع الكود التالي كيفية تحميل رسالة EML وحفظها على القرص بنفس الصيغة.
from aspose.email import MailMessage, SaveOptions
# Initialize and Load an existing EML file by specifying the MessageFormat
mail_message = MailMessage.load(data_dir + "message.eml")
mail_message.save(data_dir + "LoadAndSaveFileAsEML_out.eml", SaveOptions.default_eml)
الحفاظ على الحدود في ملفات EML
يوضح مقطع الكود التالي كيفية تحميل ملف EML وحفظه بنفس الصيغة مع الحفاظ على الحدود الأصلية.
from aspose.email import MailMessage, EmlSaveOptions, MailMessageSaveType
mail_message = MailMessage.load(data_dir + "message.eml")
# Save as eml with preserved original boundaries
eml_save_options = EmlSaveOptions(MailMessageSaveType.eml_format)
mail_message.save(data_dir + "PreserveOriginalBoundaries_out.eml", eml_save_options)
تخصيص سلاسل حدود MIME
تسمح مكتبة Aspose.Email for .NET بتكوين قالب الحدود المستخدم في رسائل MIME. يتم ذلك عبر الـ boundaries_template خاصية الـ EmlSaveOptions فئة.
عن طريق تعيين قالب مخصص، يمكنك تحديد كيفية إنشاء حدود MIME. سيتم استبدال المتغير {#} في القالب برقم حد متزايد، مما يتيح سلاسل حدود ديناميكية وقابلة للقراءة.
إذا boundaries_template لم يتم تعيينه (الافتراضي هو None)، يستخدم المكتبة تنسيق الحدود الداخلي.
يوضح مثال الكود التالي كيفية تخصيص سلاسل حدود MIME عند حفظ رسالة بريد إلكتروني بصيغة .eml:
import aspose.email as ae
# Create a sample MailMessage
message = ae.MailMessage()
message.subject = "Custom MIME Boundary"
message.body = "This message uses a custom MIME boundary template."
message.to.append(ae.MailAddress("recipient@example.com"))
# Configure save options with a custom boundary template
save_options = ae.EmlSaveOptions(ae.MailMessageSaveType.EML_FORMAT)
save_options.boundaries_template = "boundary--{#}"
# Save the message to .eml with custom boundaries
message.save("Custom_Boundary_Message.eml", save_options)
إليك مثال على بنية الرسالة مع حدود مخصصة محفوظة باستخدام الكود أعلاه:
From: sender@example.com
To: recipient@example.com
Subject: Custom_Boundary_Message
Date: Fri, 27 Dec 2024 12:00:00 +0000
Content-Type: multipart/mixed;
boundary="boundary--1"
This is a multi-part message in MIME format.
--boundary--1
Content-Type: multipart/alternative; boundary="boundary--2"
--boundary--2
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="us-ascii"
This is the plain text content of the email.
--boundary--2
Content-Type: text/html; charset="windows-1251"
Content-Transfer-Encoding: quoted-printable
<html>
<body>
<p>This is the <b>HTML</b> content of the email.</p>
</body>
</html>
--boundary--2--
--boundary--1
Content-Type: application/octet-stream; name="report-2023-08.xlsx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="report-2023-08.xlsx"
UEsDBBQABgAIAAAAIQBi7...
--boundary--1--
الحفاظ على مرفقات TNEF في ملفات EML
يوضح مقطع الكود التالي كيفية حفظ ملف EML مع الحفاظ على مرفقات TNEF.
from aspose.email import MailMessage, EmlSaveOptions, MailMessageSaveType, FileCompatibilityMode
mail_message = MailMessage.load(data_dir + "message.eml")
# Save as eml with preserved attachment
eml_save_options = EmlSaveOptions(MailMessageSaveType.eml_format)
eml_save_options.file_compatibility_mode = FileCompatibilityMode.PRESERVE_TNEF_ATTACHMENTS
mail_message.save(data_dir + "PreserveTNEFAttachment_out.eml", eml_save_options)
الحفظ كملف MSG
يوضح مقطع الكود التالي كيفية تحميل رسالة EML وتحويلها إلى MSG باستخدام الخيار المناسب من SaveOptions.
from aspose.email import MailMessage, SaveOptions, MailMessageSaveType, FileCompatibilityMode
# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")
# Save the Email message to disk in ASCII format and Unicode format
eml.save(data_dir + "AnEmail_out.msg", SaveOptions.default_msg_unicode)
الحفاظ على التواريخ في ملفات MSG
الـ MsgSaveOptions تسمح الفئة بحفظ الرسالة المصدر كملف Outlook Message (MSG) مع الحفاظ على التواريخ. يوضح مقطع الكود التالي كيفية حفظ ملف EML كملف MSG والاحتفاظ بالتواريخ.
from aspose.email import MailMessage, MsgSaveOptions, MailMessageSaveType, FileCompatibilityMode
# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")
# Save as msg with preserved dates
msg_save_options = MsgSaveOptions(MailMessageSaveType.outlook_message_format_unicode)
msg_save_options.preserve_original_dates = True
eml.save(data_dir + "outTest_out.msg", msg_save_options)
الحفظ كملف MHTML
يمكن استخدام خيارات مختلفة من MHTML للحصول على النتائج المطلوبة. يوضح مقطع الشيفرة التالي كيفية تحميل رسالة EML إلى MailMessage وتحويله إلى MHTML.
from aspose.email import MailMessage, SaveOptions, MailMessageSaveType, FileCompatibilityMode
# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")
eml.save(data_dir + "AnEmail_out.mhtml", SaveOptions.default_mhtml)
إعدادات تحويل MHTML مخصصة
الـ MhtSaveOptions توفر الفئة خيارات إضافية لحفظ رسائل البريد الإلكتروني بتنسيق MHTML. المُعدِّد MhtFormatOptions يجعل من الممكن كتابة معلومات بريد إضافية إلى ملف MHTML الناتج. الحقول الإضافية التالية يمكن كتابتها:
- NONE - لا توجد إعدادات محددة.
- WRITE_HEADER - يشير إلى أنه يجب كتابة معلومات الرأس.
- WRITE_OUTLINE_ATTACHMENTS - يشير إلى أنه يجب كتابة المرفقات المخططية.
- WRITE_COMPLETE_EMAIL_ADDRESS - يشير إلى أنه يجب كتابة عنوان البريد الإلكتروني الكامل في جميع رؤوس البريد.
- NO_ENCODE_CHARACTERS - يشير إلى أنه لا يجب استخدام أي ترميز نقل للأحرف.
- HIDE_EXTRA_PRINT_HEADER - يشير إلى أن PageHeader سيكون غير مرئي.
- WRITE_COMPLETE_TO_EMAIL_ADDRESS - يشير إلى أنه يجب كتابة عنوان البريد الإلكتروني الكامل في رأس ‘To’.
- WRITE_COMPLETE_FROM_EMAIL_ADDRESS - يشير إلى أنه يجب كتابة عنوان البريد الإلكتروني الكامل في رأس ‘From’.
- WRITE_COMPLETE_CC_EMAIL_ADDRESS - يشير إلى أنه يجب كتابة عنوان البريد الإلكتروني الكامل في رأس ‘Cc’.
- WRITE_COMPLETE_BCC_EMAIL_ADDRESS - يشير إلى أنه يجب كتابة عنوان البريد الإلكتروني الكامل في رأس ‘Bcc’.
- RENDER_CALENDAR_EVENT - يشير إلى أنه يجب كتابة النص من حدث التقويم في ملف mhtml الناتج.
- SKIP_BYTE_ORDER_MARK_IN_BODY - يشير إلى أنه يجب كتابة بايتات علامة ترتيب البايت (BOM) في النص.
- RENDER_V_CARD_INFO - يشير إلى أنه يجب كتابة النص من VCard AlternativeView في ملف mhtml الناتج.
- DISPLAY_AS_OUTLOOK - يشير إلى أن رأس From سيُعرض كما في Outlook.
- RENDER_TASK_FIELDS - يشير إلى أنه يجب كتابة حقول المهمة المحددة في ملف mhtml الناتج.
يوضح مقطع الكود التالي كيفية تحويل ملف EML إلى MHTML مع إعدادات اختيارية.
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MailMessageSaveType, FileCompatibilityMode
# Load an existing EML file
eml = MailMessage.load(data_dir + "message.eml")
# Save as mht with header
mht_save_options = MhtSaveOptions()
# Specify formatting options required
# Here we are specifying to write header information to output without writing extra print header
# and the output headers should be displayed as the original headers in the message
mht_save_options.mht_format_options = MhtFormatOptions.WRITE_HEADER | MhtFormatOptions.HIDE_EXTRA_PRINT_HEADER | MhtFormatOptions.DISPLAY_AS_OUTLOOK
# Check the body encoding for validity.
mht_save_options.check_body_content_encoding = True
eml.save(data_dir + "outMessage_out.mht", mht_save_options)
تضمين أحداث التقويم في تحويل MHTML
الـ MhtFormatOptions.RenderCalendarEvent يعرض أحداث التقويم إلى ملف MHTML الناتج. يوضح مقطع الكود التالي كيفية عرض أحداث التقويم أثناء التحويل إلى MHTML:
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode
file_name = "message.msg"
# Load the MSG file
msg = MailMessage.load(data_dir + file_name)
# Create MHT save options
options = MhtSaveOptions()
options.mht_format_options = MhtFormatOptions.WRITE_HEADER | MhtFormatOptions.RENDER_CALENDAR_EVENT
# Save the message as MHTML
msg.save(data_dir + "Meeting with Recurring Occurrences.mhtml", options)
تصدير البريد إلى MHTML دون الصور المدمجة
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode
# Load the EML file
eml = MailMessage.load(data_dir + "message.eml")
# Create MHT save options
mht_save_options = MhtSaveOptions()
mht_save_options.skip_inline_images = True
# Save the message as MHTML without inline images
eml.save(data_dir + "EmlToMhtmlWithoutInlineImages_out.mht", mht_save_options)
تصدير البريد إلى MHT مع منطقة زمنية مخصصة
MailMessage class يوفر الـ TimeZoneOffset خاصية لتحديد المنطقة الزمنية المخصصة أثناء التصدير إلى MHT. يوضح مقطع الكود التالي كيفية تصدير بريد إلكتروني إلى MHT مع منطقة زمنية مخصصة:
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode
from datetime import timedelta
# Load the EML file
eml = MailMessage.load(data_dir + "message.eml")
# Set the local time for message date
eml.time_zone_offset = timedelta(hours=-8)
# The dates will be rendered by the local system time zone
mht_save_options = MhtSaveOptions()
mht_save_options.mht_format_options = MhtFormatOptions.WRITE_HEADER
eml.save(data_dir + "ExportEmailToMHTWithCustomTimezone_out.mhtml", mht_save_options)
الحفظ كملف HTML
الـ HtmlSaveOptions تسمح الفئة بتصدير محتوى الرسالة إلى HTML مع خيار حفظ الموارد المدمجة. يوضح مقطع الكود التالي كيفية حفظ رسالة كملف HTML حيث القيمة الافتراضية لـ embed_resources هي true.
from aspose.email import MailMessage, SaveOptions, HtmlSaveOptions, HtmlFormatOptions
# Load the EML file
message = MailMessage.load(data_dir + "message.eml")
# Save the Email message as HTML
message.save(data_dir + "SaveAsHTML_out.html", SaveOptions.default_html)
# OR
eml = MailMessage.load(data_dir + "message.eml")
options = HtmlSaveOptions()
options.embed_resources = False
options.html_format_options = (
HtmlFormatOptions.WRITE_HEADER
| HtmlFormatOptions.WRITE_COMPLETE_EMAIL_ADDRESS
) # save the message headers to output HTML using the formatting options
eml.save(data_dir + "SaveAsHTML1_out.html", options)
الحفظ كقالب Outlook (.OFT)
يوضح مقطع الكود التالي كيفية حفظ رسالة كملف قالب Outlook (.oft).
from aspose.email import MailMessage, SaveOptions
eml = MailMessage("test@from.to", "test@to.to", "template subject", "Template body")
oft_eml_file_name = "EmlAsOft_out.oft"
options = SaveOptions.default_msg_unicode
options.save_as_template = True
eml.save(data_dir + oft_eml_file_name, options)