1. Introduction

GroupDocs.Viewer for .NET umożliwia importowanie wiadomości e‑mail w dowolnym popularnym formacie, renderowanie jej do HTML, PNG, JPEG oraz PDF, a także wyodrębnianie podstawowych właściwości wiadomości e‑mail bez rzeczywistego renderowania.

W rzeczywistości, pracując z wiadomościami e‑mail w GroupDocs.Viewer, użytkownicy powinni znać dwa typy specyficzne dla e‑maili:

  • klasa Options.EmailOptions – pozwala kontrolować sposób renderowania wiadomości (rozmiar strony, format daty, pola itp.).
  • Results.MailMessageViewInfo — jest tworzona przez GroupDocs.Viewer po wywołaniu metody GetViewInfo() i zawiera metadane o załadowanej wiadomości e‑mail.

Poniżej znajduje się bardzo szybki przewodnik, który pokazuje, jak renderować wiadomości e‑mail oraz uzyskać ich metadane.


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

Krótki przykład kodu poniżej pokazuje, jak wczytać wiadomość e‑mail „sample.eml” do instancji klasy Viewer, a następnie wyrenderować ją do wszystkich 4 obsługiwanych formatów wyjściowych: HTML, PDF, PNG i JPEG. Jak widać, na początku tworzone są wszystkie 4 klasy opcji widoku, potem „sample.eml” jest ładowany do instancji Viewer za pomocą ścieżki pliku, a na końcu wykonywane są 4 wywołania 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

Powyższy przykład pokazuje renderowanie ze wszystkimi opcjami ustawionymi na wartości domyślne. Istnieje jednak klasa EmailOptions, dostępna we wszystkich 4 opcjach widoku (HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) poprzez właściwość EmailOptions. Nie ma potrzeby ręcznego tworzenia instancji klasy EmailOptions i przypisywania jej do opcji widoku — wszystko to jest już zrobione, użytkownik musi jedynie dostosować wartości właściwości w razie potrzeby.

W klasie EmailOptions znajduje się kilka właściwości, opisanych poniżej.

3.1. Page size

Kontroluje rozmiar wyjściowej strony. Domyślnie jest ustawione na Unspecified — GroupDocs.Viewer dostosowuje rozmiar do najbardziej odpowiedniego. Można to ustawić w następujący sposób, na przykład:

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

3.2. Date and time format and time zone

Wiadomości e‑mail zazwyczaj posiadają datę „Sent”. Właściwość DateTimeFormat pozwala kontrolować, w jakim formacie zostanie sformatowana wartość daty i czasu, a TimeZoneOffset umożliwia zastosowanie dodatniego lub ujemnego przesunięcia do tej daty i czasu. Przykład poniżej:

JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");
jpegOptions.EmailOptions.DateTimeFormat = "MM d yyyy HH:mm tt zzz"; // całkowicie własny format
jpegOptions.EmailOptions.TimeZoneOffset = TimeSpan.FromHours(-5); // Przesunięcie o 5 godzin wstecz

Jeśli pozostawisz DateTimeFormat jako null lub pusty ciąg, GroupDocs.Viewer użyje bieżącego formatu systemowego.

3.3. Adjusting fields

Wiadomość e‑mail zawiera treść oraz pola takie jak temat, data wysłania, nadawca itp. GroupDocs.Viewer pozwala użytkownikom nadpisać etykiety tych pól poprzez właściwość FieldTextMap, która mapuje wartość wyliczenia Field (np. Field.Subject) na tekst wyświetlany w renderowanym wyniku. Dzięki temu użytkownik może zamienić dowolny wpis lub dodać nowe:

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

Możliwe jest pobranie niektórych wartości pól wiadomości e‑mail programowo, bez renderowania samej wiadomości. W tym celu użytkownik powinien wczytać dokument e‑mail do instancji Viewer, a następnie użyć metody Viewer.GetViewInfo(), jak pokazano poniżej:

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());
    // jawne rzutowanie
    MailMessageViewInfo mailMessageInfo = (MailMessageViewInfo)generalInfo;
    Console.WriteLine("From: {0}; Subject: {1}; Sent: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);

    // Renderowanie do dowolnego formatu wyjściowego, jeśli jest potrzebne
    viewer.View(HtmlViewOptions.ForEmbeddedResources());
}

Widać, że metoda Viewer.GetViewInfo() zwraca instancję wspólnej klasy ViewInfo, która następnie jest rzutowana na klasę MailMessageViewInfo. Obecnie obsługiwane są tylko pola From, Subject i Sent.

Właściwość Typ Znaczenie
Sent DateTime Dokładny czas wysłania wiadomości e‑mail.
Subject string Tekst wyświetlany w linii tematu wiadomości e‑mail.
From string Adres e‑mail nadawcy jako zwykły ciąg znaków.

Wszystkie trzy właściwości są tylko do odczytu.

5. Summary

  • Utwórz instancję Viewer i podaj plik wejściowy wiadomości e‑mail w konstruktorze (ścieżka lub strumień).
  • Wywołaj metodę Viewer.GetViewInfo i rzutuj jej wynik na typ MailMessageViewInfo, aby uzyskać metadane: pola Sent, Subject i From.
  • Użyj EmailOptions, aby zmienić rozmiar strony, format daty, przesunięcie strefy czasowej lub etykietę tekstową wyświetlaną dla dowolnego pola, a następnie wywołaj metodę Viewer.View().

Te kroki dostarczają podstawowych właściwości e‑maila i pozwalają kontrolować, jak wiadomość wygląda po renderowaniu. Nie są wymagane dodatkowe biblioteki ani skomplikowany kod.

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.