بارگذاری و ذخیره‌سازی پیام‌ها

بارگذاری و ذخیره‌سازی پیام‌های ایمیل

تشخیص فرمت فایل

API Aspose.Email قابلیت تشخیص فرمت فایل پیام ارائه‌شده را فراهم می‌کند. The 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:

  • setPageHeaderFormat(String value) - PageHeaderFormat برای نمونه‌های HeadersFormattingOptions در صورتی که DefaultPageHeaderFormat تنظیم نشده باشد.
  • setHeaderFormat(String value) - HeaderFormat برای نمونه‌های HeadersFormattingOptions در صورتی که DefaultHeaderFormat تنظیم نشده باشد.
  • setBeforeHeadersFormat(String value) - BeforeHeadersFormat برای نمونه‌های HeadersFormattingOptions در صورتی که BeforeHeadersFormat تنظیم نشده باشد.
  • setAfterHeadersFormat(String value) - AfterHeadersFormat برای نمونه‌های HeadersFormattingOptions در صورتی که AfterHeadersFormat تنظیم نشده باشد.
// 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 - فیلدهای خاص Task را در فایل خروجی می‌نویسد.
  • هیچ‌کدام - تنظیمی مشخص نشده.

قطعه کد زیر نشان می‌دهد چگونه فایل‌های EML را به MHTML تبدیل کنید با تنظیمات اختیاری.

رندر رویدادهای تقویم هنگام تبدیل به MHTML

این MhtFormatOptions.RenderCalendarEvent رویدادهای تقویم را به خروجی MTHML رندر می‌کند. قطعه کد زیر نشان می‌دهد چگونه رویدادهای تقویم را هنگام تبدیل به MHTML رندر کنید.

صدور ایمیل به MHT بدون تصاویر داخلی

صدور ایمیل به MHT با منطقه زمانی سفارشی

MailMessage کلاس فراهم می‌کند 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) ذخیره کنید.