1. Giới thiệu

GroupDocs.Viewer for .NET cho phép bạn nhập tin nhắn email ở bất kỳ định dạng phổ biến nào, chuyển đổi nó sang HTML, PNG, JPEG và PDF, đồng thời trích xuất các thuộc tính cơ bản của tin nhắn email mà không cần thực hiện việc render thực tế.

Thực tế, khi làm việc với tin nhắn email trong GroupDocs.Viewer, người dùng cần lưu ý về hai kiểu dữ liệu đặc thù cho email:

  • Lớp Options.EmailOptions – cho phép bạn kiểm soát cách tin nhắn được render (kích thước trang, định dạng ngày, các trường, v.v.).
  • Lớp Results.MailMessageViewInfo — được GroupDocs.Viewer tạo ra sau khi gọi phương thức GetViewInfo() và chứa siêu dữ liệu về email đã tải.

Dưới đây là hướng dẫn nhanh cho thấy cách render email và lấy siêu dữ liệu của chúng.


2. Tải một tin nhắn email và render ra tất cả các định dạng đầu ra

Ví dụ mã ngắn gọn dưới đây cho thấy cách tải một email đầu vào “sample.eml” vào một thể hiện của lớp Viewer và sau đó render nó ra 4 định dạng đầu ra được hỗ trợ: HTML, PDF, PNG và JPEG. Như bạn thấy, ở đầu tất cả 4 lớp tùy chọn view được khởi tạo, sau đó “sample.eml” được tải vào thể hiện Viewer bằng đường dẫn tệp, và cuối cùng 4 lời gọi Viewer.View() được thực hiện.

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. Tinh chỉnh các tùy chọn email cho việc render

Ví dụ trên cho thấy việc render với tất cả các tùy chọn được đặt ở giá trị mặc định. Tuy nhiên, có một lớp EmailOptions, và nó có sẵn trong cả 4 tùy chọn view (HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) thông qua thuộc tính EmailOptions. Không cần phải tự tay tạo một thể hiện của lớp EmailOptions và gán nó cho các tùy chọn view qua thuộc tính EmailOptions — mọi thứ đã được thực hiện sẵn, người dùng chỉ cần điều chỉnh các giá trị thuộc tính nếu cần.

Có một số thuộc tính trong lớp EmailOptions, được giải thích dưới đây.

3.1. Kích thước trang

Enum PageSize kiểm soát kích thước của trang đầu ra. Mặc định là Unspecified — GroupDocs.Viewer sẽ tự điều chỉnh kích thước cho phù hợp nhất. Có thể đặt theo cách sau, ví dụ:

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

3.2. Định dạng ngày‑giờ và múi giờ

Tin nhắn email thường có ngày “Sent”. Thuộc tính DateTimeFormat cho phép kiểm soát cách định dạng giá trị ngày‑giờ này, và TimeZoneOffset cho phép áp dụng độ dịch dương hoặc âm cho ngày‑giờ. Ví dụ dưới đây:

JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");
jpegOptions.EmailOptions.DateTimeFormat = "MM d yyyy HH:mm tt zzz"; // completely custom format
jpegOptions.EmailOptions.TimeZoneOffset = TimeSpan.FromHours(-5); // Add shift to 5 hours earlier

Nếu bạn để DateTimeFormatnull hoặc chuỗi rỗng, thì GroupDocs.Viewer sẽ sử dụng định dạng hiện tại của hệ thống.

3.3. Điều chỉnh các trường

Tin nhắn email chứa phần nội dung và các trường như tiêu đề, ngày‑giờ gửi, người gửi, v.v. GroupDocs.Viewer cho phép người dùng ghi đè nhãn của các trường này thông qua thuộc tính FieldTextMap, thuộc tính này ánh xạ một giá trị enum Field (ví dụ, Field.Subject) tới văn bản sẽ hiển thị trong kết quả render thông qua Dictionary. Vì vậy người dùng có thể thay thế bất kỳ mục nào hoặc thêm mục mới:

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. Tải email và lấy thông tin view của nó

Bạn có thể lấy một số giá trị trường của tin nhắn email một cách lập trình mà không cần render email. Để làm điều này, người dùng cần tải tài liệu email vào thể hiện Viewer và sau đó sử dụng phương thức instance Viewer.GetViewInfo(), như minh họa dưới đây:

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

    // Render to any output format if needed
    viewer.View(HtmlViewOptions.ForEmbeddedResources());
}

Có thể thấy phương thức Viewer.GetViewInfo() trả về một thể hiện của lớp chung ViewInfo, sau đó được ép kiểu sang lớp MailMessageViewInfo. Hiện tại chỉ hỗ trợ các trường From, SubjectSent.

Property Type Meaning
Sent DateTime Thời gian chính xác email được gửi.
Subject string Văn bản xuất hiện trong tiêu đề của email.
From string Địa chỉ email của người gửi dưới dạng chuỗi thuần.

Cả ba thuộc tính đều chỉ đọc.

5. Tổng kết

  • Tạo một thể hiện Viewer và chỉ định tệp email đầu vào cho hàm khởi tạo bằng đường dẫn hoặc luồng.
  • Gọi phương thức Viewer.GetViewInfo() và sau đó ép kết quả sang kiểu MailMessageViewInfo để lấy siêu dữ liệu: các trường Sent, SubjectFrom.
  • Sử dụng EmailOptions để thay đổi kích thước trang, định dạng ngày, độ dịch múi giờ, hoặc nhãn văn bản hiển thị cho bất kỳ trường nào, sau đó gọi phương thức Viewer.View().

Các bước này cung cấp các thuộc tính cốt lõi của email và cho phép bạn kiểm soát cách tin nhắn hiển thị khi được render. Không cần thư viện phụ trợ hay mã phức tạp.

Xem thêm

Nhận bản dùng thử miễn phí

Bạn có thể tải phiên bản dùng thử miễn phí của GroupDocs.Viewer for .NET từ releases.groupdocs.com. Bạn cũng có thể nhận giấy phép tạm thời để thử tất cả các tính năng và chức năng mà không bị giới hạn từ đây.