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 metodyGetViewInfo()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ę
Vieweri podaj plik wejściowy wiadomości e‑mail w konstruktorze (ścieżka lub strumień). - Wywołaj metodę
Viewer.GetViewInfoi rzutuj jej wynik na typMailMessageViewInfo, aby uzyskać metadane: polaSent,SubjectiFrom. - 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.