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.