1. Introduction

GroupDocs.Viewer for .NET библиотека позволяет импортировать электронное письмо в любом популярном формате, рендерить его в HTML, PNG, JPEG и PDF, а также извлекать базовые свойства сообщения без фактического рендеринга.

На самом деле, работая с электронными письмами в GroupDocs.Viewer, пользователи должны учитывать два специфических типа:

  • Options.EmailOptions — класс, позволяющий управлять тем, как сообщение будет отрисовано (размер страницы, формат даты, поля и т.д.).
  • Results.MailMessageViewInfo — объект, создаваемый GroupDocs.Viewer после вызова метода GetViewInfo() и содержащий метаданные загруженного письма.

Ниже представлено очень краткое руководство, показывающее, как рендерить электронные письма и получать их метаданные.


2. Load an email message and render it to all output formats

Очень короткий пример кода ниже демонстрирует загрузку входного письма «sample.eml» в экземпляр класса Viewer, а затем рендеринг его во все 4 поддерживаемых формата вывода: HTML, PDF, PNG и JPEG. Как видите, в начале создаются все 4 класса параметров просмотра, затем «sample.eml» загружается в экземпляр Viewer по пути к файлу, после чего делаются 4 вызова Viewer.View().

using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;


HtmlViewOptions htmlOptions = HtmlViewOptions.ForEmbeddedResources("html-page{0}.html");
PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");

using (Viewer viewer = new Viewer("sample.eml"))
{
    viewer.View(htmlOptions);
    viewer.View(pdfOptions);
    viewer.View(pngOptions);
    viewer.View(jpegOptions);
}

3. Tuning email options for rendering

Приведённый выше пример показывает рендеринг с параметрами, установленными по умолчанию. Однако существует класс EmailOptions, который доступен во всех 4 параметрах просмотра (HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) через свойство EmailOptions. Нет необходимости вручную создавать экземпляр EmailOptions и присваивать его параметрам просмотра — всё уже сделано, пользователю остаётся лишь при необходимости скорректировать значения свойств.

Ниже описаны несколько свойств класса EmailOptions.

3.1. Page size

Управляет размером выходной страницы. По умолчанию — Unspecified, и GroupDocs.Viewer подбирает наиболее подходящий размер. Можно задать, например, так:

PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
pdfOptions.EmailOptions.PageSize = PageSize.A1;

3.2. Date and time format and time zone

Электронные письма обычно содержат дату отправки («Sent»). Свойство DateTimeFormat позволяет задать формат отображения этой даты и времени, а TimeZoneOffset — применить положительный или отрицательный сдвиг. Пример ниже:

JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");
jpegOptions.EmailOptions.DateTimeFormat = "MM d yyyy HH:mm tt zzz"; // полностью пользовательский формат
jpegOptions.EmailOptions.TimeZoneOffset = TimeSpan.FromHours(-5); // Сдвиг на 5 часов назад

Если оставить DateTimeFormat равным null или пустой строке, GroupDocs.Viewer использует текущий системный формат.

3.3. Adjusting fields

Письмо содержит тело сообщения и такие поля, как тема, дата отправки, отправитель и т.д. GroupDocs.Viewer позволяет переопределять подписи этих полей через свойство FieldTextMap, которое сопоставляет значение перечисления Field (например, Field.Subject) с текстом, отображаемым в выводе. Таким образом, пользователь может заменить любую запись или добавить новые:

PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
pngOptions.EmailOptions.FieldTextMap[Field.Subject] = "Email Subject";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "Mail was sent at";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "Sender";

4. Load an email and get its view information

Можно получить некоторые значения полей письма программно, без рендеринга самого сообщения. Для этого пользователь загружает документ письма в экземпляр Viewer, а затем использует метод Viewer.GetViewInfo(), как показано ниже:

using System;
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
using GroupDocs.Viewer.Results;
// ...

using (Viewer viewer = new Viewer("sample.eml"))
{
    ViewInfo generalInfo = viewer.GetViewInfo(ViewInfoOptions.ForHtmlView());
    // явное приведение типа
    MailMessageViewInfo mailMessageInfo = (MailMessageViewInfo)generalInfo;
    Console.WriteLine("From: {0}; Subject: {1}; Sent: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);

    // При необходимости рендеринг в любой формат
    viewer.View(HtmlViewOptions.ForEmbeddedResources());
}

Можно увидеть, что метод Viewer.GetViewInfo() возвращает экземпляр общего класса ViewInfo, который затем приводится к типу MailMessageViewInfo. На данный момент поддерживаются только поля From, Subject и Sent.

Свойство Тип Значение
Sent DateTime Точное время отправки письма.
Subject string Текст, отображаемый в строке темы письма.
From string Адрес электронной почты отправителя в виде простой строки.

Все три свойства доступны только для чтения.

5. Summary

  • Создайте экземпляр Viewer и укажите файл входного письма в конструкторе по пути или потоку.
  • Вызовите метод Viewer.GetViewInfo и приведите его результат к типу MailMessageViewInfo, чтобы получить метаданные: поля Sent, Subject и From.
  • Используйте EmailOptions для изменения размера страницы, формата даты, смещения часового пояса или текста подписи любого поля, затем вызовите метод Viewer.View().

Эти шаги позволяют получить основные свойства письма и контролировать его внешний вид при рендеринге. Дополнительные библиотеки или сложный код не требуются.

See Also

Get a free trial

You can download a free trial version of GroupDocs.Viewer for .NET from releases.groupdocs.com. You can also acquire a temporary license to try all features and functionalities without restrictions from here.