تحميل وحفظ الرسائل

تحميل وحفظ رسائل البريد الإلكتروني

اكتشاف صيغة ملف

توفر واجهة برمجة التطبيقات Aspose.Email القدرة على اكتشاف صيغة ملف الرسالة المقدم. الـ DetectFileFormat طريقة الـ FileFormatUtil يمكن استخدام الفئة لتحقيق ذلك. يمكن استخدام الفئات والأساليب التالية لاكتشاف صيغة الملف المحمَّل.

يُظهر مقطع الشيفرة التالي كيفية اكتشاف صيغ الملفات.

تحميل رسالة بريد إلكتروني

لتحميل رسالة بخيارات تحميل محددة، توفر Aspose.Email الـ LoadOptions فئة يمكن استخدامها على النحو التالي:

الحفاظ على تنسيق الرسالة المدمجة أثناء التحميل

حفظ وتحويل رسائل البريد الإلكتروني

تسهل Aspose.Email تحويل أي نوع من الرسائل إلى صيغة أخرى. لإظهار هذه الميزة، يحمل الكود في هذا المقال ثلاثة أنواع من الرسائل من القرص ويحفظها بصيغ أخرى. الفئة الأساسية SaveOptions والفئات EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions لإعدادات إضافية عند الحفظ MailMessage يمكن استخدامها لحفظ الرسائل بصيغ أخرى. يوضح المقال كيفية استخدام هذه الفئات لحفظ بريد إلكتروني نموذجي كـ

  • صيغة EML.
  • ملف Outlook MSG.
  • صيغة MHTML.
  • صيغة HTML.

تحميل وحفظ رسالة بريد إلكتروني

يُظهر مقطع الشيفرة التالي كيفية تحميل رسالة EML وحفظها على القرص بنفس الصيغة.

تحميل وحفظ رسالة بريد إلكتروني مع الحفاظ على الحدود الأصلية

يُظهر مقطع الشيفرة التالي كيفية تحميل EML وحفظها كـ EML مع الحفاظ على الحدود الأصلية.

حفظ كـ EML مع الحفاظ على مرفقات TNEF

يُظهر مقطع الشيفرة التالي كيفية حفظ كـ EML مع الحفاظ على مرفقات TNEF.

حفظ EML إلى MSG

يُظهر مقطع الشيفرة التالي كيفية تحميل رسالة EML وتحويلها إلى MSG باستخدام الخيار المناسب من SaveOptions.

حفظ EML إلى MSG مع تواريخ محفوظة

الـ MsgSaveOptions تتيح الفئة حفظ الرسالة المصدر كملف رسالة Outlook (MSG) مع الحفاظ على التواريخ. يوضح مقطع الشيفرة التالي كيفية حفظ كـ MSG مع تواريخ محفوظة.

حفظ EML كـ MHTML

يمكن استخدام خيارات مختلفة من MHTML للحصول على النتائج المطلوبة. يوضح مقطع الشيفرة التالي كيفية تحميل رسالة EML إلى MailMessage وتحويله إلى MHTML مع تاريخ الرسالة بنظام UTC.

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);

// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
    mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}

تنسيق رؤوس MHT عالميًا عند الحفظ من EML

مع Aspose.Email، يمكنك استخدام خيارات التنسيق العامة لرأس Mht. تحدد الخيارات العامة التنسيق المشترك لرأس Mht لجميع MhtSaveOptions الحالات. تم تصميم هذه الميزة لتجنب ضبط التنسيق لكل حالة من MhtSaveOptions.

استخدم الأساليب التالية من GlobalFormattingOptions فئة وعينة الشيفرة أدناه لتعيين تنسيق رأس Mht:

// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();

تحويل EML إلى MHTML مع إعدادات اختيارية

الـ MhtSaveOptions توفر الفئة خيارات إضافية لحفظ رسائل البريد الإلكتروني بتنسيق MHTML. المُعدِّد MhtFormatOptions يجعل من الممكن كتابة معلومات بريد إضافية إلى ملف MHTML الناتج. الحقول الإضافية التالية يمكن كتابتها:

  • WriteHeader - يكتب رأس البريد إلى ملف الإخراج.
  • WriteOutlineAttachments - يكتب المرفقات الخارجية إلى ملف الإخراج.
  • WriteCompleteEmailAddress - يكتب عنوان البريد الكامل إلى ملف الإخراج.
  • NoEncodeCharacters - لا يجب استخدام ترميز نقل الأحرف.
  • HideExtraPrintHeader - إخفاء رأس طباعة إضافي من أعلى ملف الإخراج.
  • WriteCompleteToEmailAddress - يكتب عنوان البريد الكامل للمستلم إلى ملف الإخراج.
  • WriteCompleteFromEmailAddress - يكتب عنوان البريد الكامل للمرسل إلى ملف الإخراج.
  • WriteCompleteCcEmailAddress - يكتب عناوين البريد الكاملة لأي مستلمين نسخة (Cc) إلى ملف الإخراج.
  • WriteCompleteBccEmailAddress - يكتب عنوان البريد الكامل لأي مستلمين مخفيين (Bcc) إلى ملف الإخراج.
  • RenderCalendarEvent - يكتب النص من حدث التقويم إلى ملف الإخراج.
  • SkipByteOrderMarkInBody - يكتب بايتات علامة ترتيب البايت (BOM) إلى ملف الإخراج.
  • RenderVCardInfo - يكتب النص من VCard AlternativeView إلى ملف الإخراج.
  • DisplayAsOutlook - عرض رأس From.
  • RenderTaskFields - يكتب حقول مهمة محددة إلى ملف الإخراج.
  • لا شيء - لم يتم تحديد أي إعداد.

يُظهر مقطع الشيفرة التالي كيفية تحويل ملفات EML إلى MHTML مع إعدادات اختيارية.

عرض أحداث التقويم أثناء التحويل إلى MHTML

الـ MhtFormatOptions.RenderCalendarEvent يقوم بعرض أحداث التقويم إلى إخراج MHTML. يوضح مقطع الشيفرة التالي كيفية عرض أحداث التقويم أثناء التحويل إلى MHTML.

تصدير البريد الإلكتروني إلى MHT دون صور مضمنة

تصدير البريد الإلكتروني إلى MHT مع منطقة زمنية مخصصة

MailMessage class يوفر الـ setTimeZoneOffset خاصية لتعيين المنطقة الزمنية المخصصة أثناء التصدير إلى MHT. يوضح المقتطف البرمجي التالي كيفية تصدير البريد الإلكتروني إلى MHT مع منطقة زمنية مخصصة.

MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());

// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);

MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);

تصدير البريد الإلكتروني إلى EML

يوضح المقتطف البرمجي التالي كيفية تصدير رسائل البريد الإلكتروني إلى تنسيق EML.

حفظ البريد الإلكتروني كـ HTML

الـ HtmlSaveOptions الفئة تسمح لك بتصدير محتوى الرسالة إلى HTML. يوضح المقتطف البرمجي التالي كيفية حفظ رسالة كملف HTML.

حفظ رسالة البريد الإلكتروني كـ HTML باستخدام مسار نسبي للموارد

عند تصدير رسائل البريد الإلكتروني إلى تنسيق HTML، يمكن اختيار حفظ موارد البريد بمسارات نسبية. توفر هذه الميزة مرونة أكبر في ربط الموارد في ملف HTML الناتج، مما يسهل مشاركة وعرض الرسائل المحفوظة على أنظمة مختلفة. الـ HtmlSaveOptions.UseRelativePathToResources توفر الخاصية القدرة على حفظ الموارد بمسارات نسبية. القيمة الافتراضية للخاصية هي false (يتم حفظ الموارد بمسارات مطلقة). عند ضبطها على true، تُحفظ الموارد بمسارات نسبية. ملفات HTML ذات المسارات النسبية أكثر قابلية للنقل ويمكن عرضها بشكل صحيح بغض النظر عن هيكل ملفات بيئة الاستضافة. يمكنك الاختيار بين المسارات المطلقة والنسبية حسب المتطلبات. يمكنك تعريف مسارات مخصصة للموارد باستخدام الـ ResourceHtmlRenderingHandler الحدث.

حفظ باستخدام المسار النسبي الافتراضي للموارد

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);

msg.save("target.html", htmlSaveOptions);

في هذه الحالة، سيتم حفظ الموارد في مجلد [html file name].files، في نفس مسار ملف .html، وسيشير HTML إلى الموارد عبر مسارات نسبية.

حفظ باستخدام مسار مطلق للموارد

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

msg.save("target.html", htmlSaveOptions);

كما في الحالة الأولى، سيتم حفظ الموارد في مجلد [html file name].files افتراضيًا، ولكن سيشير HTML إلى الموارد باستخدام مسارات مطلقة.

مسار نسبي مخصص باستخدام حدث ResourceHtmlRenderingHandler

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
    @Override
    public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
        if (sender instanceof AttachmentBase) {
            AttachmentBase attachment = (AttachmentBase) sender;
            // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
            args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
        }
    }
});

msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);

باستخدام الـ ResourceHtmlRenderingHandler الحدث، يمكنك تعيين مسارات مخصصة نسبية أو مطلقة للموارد. عند تخصيص المسارات باستخدام الـ ResourceHtmlRenderingHandler معالج الحدث، وبما أن UseRelativePathToResources عند ضبطها على true، يجب عليك تعيين مسار نسبي إلى الـ PathToResourceFile خاصية لضمان الإشارة الصحيحة.

الحفاظ على الأيقونات المخصصة في الرسالة أثناء تحويلها إلى HTML

أحيانًا تحتوي الرسالة على مرفقات مدمجة تُعرض كصور أيقونات في نص الرسالة. قد تُسبب هذه الرسائل مشاكل عند تحويلها إلى HTML بسبب فقدان صور الأيقونات. ذلك لأن أيقونات المرفقات لا تُحفظ مباشرةً في الرسالة.

يمكن لمستخدم Aspose.Email تخصيص أيقونات المرفقات عند تحويل الرسالة إلى HTML. للقيام بذلك، الـ HtmlSaveOptions.ResourceHtmlRendering يُستخدم الحدث لتخصيص عرض ملفات الموارد (مثل المرفقات) عند حفظ رسالة بريد إلكتروني كملف HTML. في مثال الكود أدناه، يُستخدم معالج الحدث لضبط مسار ملفات الموارد (الأيقونات) بشكل ديناميكي بناءً على نوع محتوى المرفق. يتيح ذلك تخصيص عرض الموارد في إخراج HTML وفقًا لنوع الملف.


 HtmlSaveOptions options = new HtmlSaveOptions();

options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {

   @Override

   public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {

        AttachmentBase attachment = (AttachmentBase) sender;

        e.setCaption(attachment.getContentType().getName());

       if (attachment.getContentType().getName().endsWith(".pdf")) {

            e.setPathToResourceFile("pdf_icon.png");

       } else if (attachment.getContentType().getName().endsWith(".docx")) {

            e.setPathToResourceFile("word_icon.jpg");

       } else if (attachment.getContentType().getName().endsWith(".jpg")) {

            e.setPathToResourceFile("jpeg_icon.png");

       } else {

            e.setPathToResourceFile("not_found_icon.png");

       }

   }

});

options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);

String fileName = "message.msg";

MailMessage mailMessage = MailMessage.load(fileName);

mailMessage.save("fileName.html", options);

ضبط الوقت والمنطقة الزمنية عند حفظ EML كـ HTML

يمكن لمستخدمي Aspose.Email ضبط صيغ عرض الوقت والمنطقة الزمنية في HtmlSaveOptions. الـ HeadersFormattingOptions الفئة تسمح بتحديد خيارات تنسيق الرؤوس عند حفظ MailMessage إلى تنسيق Mhtml أو Html. الطرق التالية من الـ HtmlFormatOptions الفئة تحدد الحقول التي ستُعرض في ملف الإخراج:

  • RenderCalendarEvent - يشير إلى أن النص من حدث التقويم يجب أن يُكتب في ملف mhtml الناتج.
  • RenderVCardInfo - يشير إلى أن النص من VCard AlternativeView يجب أن يُكتب في ملف HTML الناتج.

يُظهر مثال الكود التالي كيفية ضبط الوقت والمنطقة الزمنية عند حفظ EML كـ HTML:

MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");

حفظ كـ HTML دون تضمين الموارد

حفظ رسالة كقالب Outlook (.oft)

يوضح المقتطف البرمجي التالي كيفية حفظ رسالة كقالب Outlook (.oft).