1. Introduction

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ế, khi làm việc với email trong GroupDocs.Viewer, người dùng cần lưu ý đến 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 render tin nhắn (kích thước trang, định dạng ngày, các trường, v.v.).
  • 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 của 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. Load an email message and render it to all output formats

Đoạn mã ngắn dưới đây minh họa cách tải email đầu vào “sample.eml” vào một thể hiện của lớp Viewer và sau đó render nó sang 4 định dạng đầu ra được hỗ trợ: HTML, PDF, PNG và JPEG. Như bạn thấy, ở đầu tiên 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. Tuning email options for rendering

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ự tạo một thể hiện của lớp EmailOptions và gán nó cho các tùy chọn view — 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. Page size

Kiểm soát kích thước trang đầu ra. Mặc định là Unspecified — GroupDocs.Viewer sẽ tự điều chỉnh kích thước sao 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. Date and time format and time zone

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"; // định dạng hoàn toàn tùy chỉnh
jpegOptions.EmailOptions.TimeZoneOffset = TimeSpan.FromHours(-5); // dịch thời gian 5 giờ về phía trước

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

3.3. Adjusting fields

Tin nhắn email chứa phần nội dung và các trường như tiêu đề, thời gian 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. Như 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. Load an email and get its view information

Bạn có thể lấy một số giá trị trường của email một cách lập trình mà không cần render toàn bộ 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 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());
    // ép kiểu rõ ràng
    MailMessageViewInfo mailMessageInfo = (MailMessageViewInfo)generalInfo;
    Console.WriteLine("From: {0}; Subject: {1}; Sent: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);

    // Render sang bất kỳ định dạng nào nếu cần
    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 sang lớp MailMessageViewInfo. Hiện tại chỉ hỗ trợ các trường From, SubjectSent.

Thuộc tính Kiểu Ý nghĩa
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. Summary

  • 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 email cơ bản và cho phép bạn kiểm soát cách hiển thị tin nhắn khi render. Không cần thư viện phụ trợ hay mã phức tạp.

See Also

Get a free trial

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ừ here.