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ứcGetViewInfo()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 để DateTimeFormat là null 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, Subject và Sent.
| 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
Viewervà 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ểuMailMessageViewInfođể lấy siêu dữ liệu: các trườngSent,SubjectvàFrom. - 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ứcViewer.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.