Завантаження та збереження повідомлень

Contents
[ ]

Завантаження та збереження електронних листів

Виявити формат файлу

API Aspose.Email забезпечує можливість виявлення формату файлу наданого повідомлення. The DetectFileFormat метод FileFormatUtil клас можна використати для цього. Наступні класи та методи можна застосовувати для визначення завантаженого формату файлу.

Наступний фрагмент коду показує, як виявити формати файлів.

Завантажити електронний лист

Щоб завантажити повідомлення з певними параметрами завантаження, Aspose.Email надає the 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 зі збереженими датами

The MsgSaveOptions клас дозволяє зберегти вихідне повідомлення у файл Outlook Message (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 з додатковими налаштуваннями

The MhtSaveOptions клас надає додаткові параметри для збереження електронних листів у формат MHTML. Перелічувач MhtFormatOptions дає можливість записати додаткову інформацію листа у вихідний MHTML. Можна записати наступні додаткові поля:

  • WriteHeader - записує заголовок листа у вихідний файл.
  • WriteOutlineAttachments - записує позначені вкладення у вихідний файл.
  • WriteCompleteEmailAddress - записує повну електронну адресу у вихідний файл.
  • NoEncodeCharacters - не слід використовувати кодування передачі символів.
  • HideExtraPrintHeader - приховує додатковий заголовок друку у верхній частині вихідного файлу.
  • WriteCompleteToEmailAddress - записує повну адресу отримувача у вихідний файл.
  • WriteCompleteFromEmailAddress - записує повну адресу відправника у вихідний файл.
  • WriteCompleteCcEmailAddress - записує повні електронні адреси будь‑яких отримувачів у копії (Cc) у вихідний файл.
  • WriteCompleteBccEmailAddress - записує повну електронну адресу будь‑якого отримувача в копії (Bcc) у вихідний файл.
  • RenderCalendarEvent - записує текст з календарної події у вихідний файл.
  • SkipByteOrderMarkInBody - записує байти маркера порядку байтів (BOM) у вихідний файл.
  • RenderVCardInfo - записує текст з VCard AlternativeView у вихідний файл.
  • DisplayAsOutlook - відображає заголовок From.
  • RenderTaskFields - записує певні поля завдання у вихідний файл.
  • None - Не вказано налаштування.

Наступний фрагмент коду показує, як конвертувати файли EML у MHTML з додатковими налаштуваннями.

Рендерити події календаря під час конвертації у MHTML

The 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

The 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. The 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).