1. Wprowadzenie

GroupDocs.Viewer for .NET umożliwia importowanie wiadomości e‑mail w dowolnym popularnym formacie, renderowanie jej do HTML, PNG, JPEG i PDF oraz 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.).
  • klasa 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 i pobierać ich metadane.


2. Ładowanie wiadomości e‑mail i renderowanie jej do wszystkich formatów wyjściowych

Krótki przykład kodu poniżej pokazuje, jak wczytać wiadomość e‑mail „sample.eml” do instancji klasy Viewer i 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 przy użyciu ścieżki do 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. Dostosowywanie opcji e‑mail dla renderowania

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 przez właściwość EmailOptions — 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. Rozmiar strony

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

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

3.2. Format daty i czasu oraz strefa czasowa

Wiadomości e‑mail zazwyczaj mają datę „Sent”. Właściwość DateTimeFormat pozwala kontrolować, w jaki sposób ta wartość daty i czasu będzie formatowana, 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); // Dodaj 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. Dostosowywanie pól

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 za pomocą Dictionary. Użytkownik może więc 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. Ładowanie e‑maila i pobieranie informacji o widoku

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 instancyjnej 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 moment, w którym e‑mail został wysłany.
Subject string Tekst wyświetlany w wierszu tematu e‑maila.
From string Adres e‑mail nadawcy jako zwykły ciąg znaków.

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

5. Podsumowanie

  • Utwórz instancję Viewer i podaj plik wejściowy wiadomości e‑mail w konstruktorze, używając ścieżki lub strumienia.
  • Wywołaj metodę Viewer.GetViewInfo(), a następnie 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.

Zobacz także

Uzyskaj bezpłatną wersję próbną

Możesz pobrać bezpłatną wersję próbną GroupDocs.Viewer for .NET z releases.groupdocs.com. Możesz także uzyskać tymczasową licencję, aby wypróbować wszystkie funkcje i możliwości bez ograniczeń, tutaj.