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. Также можно получить временную лицензию для полного тестирования всех функций без ограничений здесь.