1. Введение
GroupDocs.Viewer for .NET библиотека позволяет импортировать сообщение электронной почты в любой популярный формат, рендерить его в HTML, PNG, JPEG и PDF, а также извлекать базовые свойства сообщения без фактического рендеринга.
На самом деле, работая с сообщениями электронной почты в GroupDocs.Viewer, пользователи должны знать о двух типах, специфичных для почты:
- Класс
Options.EmailOptions— позволяет управлять тем, как сообщение будет отрисовано (размер страницы, формат даты, поля и т.д.). - Класс
Results.MailMessageViewInfo— создаётся GroupDocs.Viewer после вызова методаGetViewInfo()и содержит метаданные загруженного сообщения электронной почты.
Ниже представлено очень краткое руководство, показывающее, как рендерить сообщения электронной почты и получать их метаданные.
2. Загрузка сообщения электронной почты и рендеринг во все форматы вывода
Ниже приведён короткий пример кода, показывающий загрузку входного сообщения электронной почты «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. Настройка параметров электронной почты для рендеринга
Приведённый выше пример показывает рендеринг с параметрами, установленными по умолчанию. Однако существует класс EmailOptions, и он доступен во всех 4 параметрах просмотра (HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) через свойство EmailOptions. Нет необходимости вручную создавать экземпляр класса EmailOptions и присваивать его параметрам просмотра через свойство EmailOptions — всё это уже сделано, пользователю остаётся лишь при необходимости скорректировать значения свойств.
В классе EmailOptions есть несколько свойств, описанных ниже.
3.1. Размер страницы
Перечисление PageSize управляет размером выходной страницы. По умолчанию значение Unspecified — GroupDocs.Viewer подбирает наиболее подходящий размер. Можно задать, например, так:
PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
pdfOptions.EmailOptions.PageSize = PageSize.A1;
3.2. Формат даты и времени и часовой пояс
У сообщений электронной почты обычно есть дата «Отправлено». Свойство 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. Настройка полей
Сообщение почты содержит тело письма и такие поля, как тема, дата отправки, отправитель и т.д. GroupDocs.Viewer позволяет пользователям переопределять подписи этих полей через свойство FieldTextMap, которое сопоставляет значение перечисления Field (например, Field.Subject) с текстом, отображаемым в отрендеренном выводе, через Dictionary. Таким образом, пользователь может заменить любую запись или добавить новые:
PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
pngOptions.EmailOptions.FieldTextMap[Field.Subject] = "Тема письма";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "Письмо отправлено";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "Отправитель";
4. Загрузка письма и получение информации о представлении
Можно получить некоторые значения полей сообщения электронной почты программно без рендеринга самого письма. Для этого пользователь должен загрузить документ письма в экземпляр 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. Итоги
- Создайте экземпляр
Viewerи укажите файл входного сообщения электронной почты в конструкторе по пути или потоку. - Вызовите метод
Viewer.GetViewInfo()и затем приведите его результат к типуMailMessageViewInfo, чтобы получить метаданные: поляSent,SubjectиFrom. - Используйте
EmailOptionsдля изменения размера страницы, формата даты, смещения часового пояса или текста подписи любого поля, после чего вызовите методViewer.View().
Эти шаги позволяют получить основные свойства письма и контролировать его внешний вид при рендеринге. Дополнительные библиотеки или сложный код не требуются.
Смотрите также
Получить бесплатную пробную версию
Вы можете скачать бесплатную пробную версию GroupDocs.Viewer for .NET с сайта releases.groupdocs.com. Также можно получить временную лицензию для полного тестирования всех функций без ограничений здесь.