Tải lên và Lưu Tin nhắn
Tải lên và Lưu Tin nhắn Email
Phát hiện Định dạng Tệp
Aspose.Email API cung cấp khả năng phát hiện định dạng tệp của tệp tin tin nhắn đã cung cấp. DetectFileFormat phương thức của FileFormatUtil lớp có thể được sử dụng để đạt được điều này. Các lớp và phương thức sau có thể được dùng để phát hiện định dạng tệp đã tải.
- FileFormatType Lớp
- FileFormatInfo Lớp
- FileFormatUtil Lớp
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
Đoạn mã dưới đây cho bạn thấy cách phát hiện định dạng tệp.
Tải một Tin nhắn Email
Để tải một tin nhắn với các tùy chọn tải cụ thể, Aspose.Email cung cấp LoadOptions lớp có thể được sử dụng như sau:
Bảo tồn Định dạng Tin nhắn Nhúng khi Tải
Lưu và Chuyển Đổi Tin nhắn Email
Aspose.Email giúp dễ dàng chuyển đổi bất kỳ loại tin nhắn nào sang định dạng khác. Để minh họa tính năng này, mã trong bài viết này tải ba loại tin nhắn từ đĩa và lưu chúng lại ở các định dạng khác. Lớp cơ sở SaveOptions và các lớp EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions cho các cài đặt bổ sung khi lưu MailMessage có thể được sử dụng để lưu tin nhắn sang các định dạng khác. Bài viết trình bày cách sử dụng các lớp này để lưu một email mẫu dưới dạng:
- Định dạng EML.
- Outlook MSG.
- Định dạng MHTML.
- Định dạng HTML.
Tải và Lưu một Tin nhắn Email
Đoạn mã dưới đây cho bạn thấy cách tải một tin nhắn EML và lưu nó vào đĩa ở cùng định dạng.
Tải và Lưu một Tin nhắn Email Giữ Nguyên Ranh Giới Gốc
Đoạn mã dưới đây cho bạn thấy cách tải EML và lưu dưới dạng EML giữ nguyên các ranh giới gốc.
Lưu dưới dạng EML Giữ lại Tệp đính kèm TNEF
Đoạn mã dưới đây cho bạn thấy cách lưu dưới dạng EML giữ lại các tệp đính kèm TNEF.
Lưu EML sang MSG
Đoạn mã dưới đây cho bạn thấy cách tải một tin nhắn EML và chuyển đổi nó sang MSG bằng tùy chọn thích hợp từ SaveOptions.
Lưu EML sang MSG với Ngày được Bảo tồn
Cái MsgSaveOptions lớp cho phép bạn lưu tin nhắn nguồn dưới dạng tệp Outlook Message (MSG) bảo tồn ngày tháng. Đoạn mã dưới đây cho bạn cách Lưu dưới dạng MSG với Ngày được Bảo tồn.
Lưu EML dưới dạng MHTML
Các tùy chọn khác nhau của MHTML có thể được sử dụng để đạt được kết quả mong muốn. Đoạn mã dưới đây cho bạn cách tải một tin nhắn EML vào MailMessage và chuyển đổi nó sang MHTML với ngày tin nhắn theo hệ thống UTC.
// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);
// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}
Định dạng Tiêu đề MHT Toàn cục khi Lưu từ EML
Với Aspose.Email, bạn có thể sử dụng các tùy chọn định dạng toàn cục cho tiêu đề Mht. Các tùy chọn toàn cục thiết lập định dạng chung của tiêu đề Mht cho tất cả MhtSaveOptions các thể hiện. Tính năng này được thiết kế để tránh việc đặt định dạng cho mỗi thể hiện của MhtSaveOptions.
Sử dụng các phương thức sau của GlobalFormattingOptions lớp và mẫu mã dưới đây để đặt định dạng cho tiêu đề Mht:
- setPageHeaderFormat(String value) - PageHeaderFormat cho các thể hiện của HeadersFormattingOptions nếu DefaultPageHeaderFormat chưa được đặt.
- setHeaderFormat(String value) - HeaderFormat cho các thể hiện của HeadersFormattingOptions nếu DefaultHeaderFormat chưa được đặt.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat cho các thể hiện của HeadersFormattingOptions nếu BeforeHeadersFormat chưa được đặt.
- setAfterHeadersFormat(String value) - AfterHeadersFormat cho các thể hiện của HeadersFormattingOptions nếu AfterHeadersFormat chưa được đặt.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
Chuyển đổi EML sang MHTML với Các Cài đặt Tùy chọn
Cái MhtSaveOptions lớp cung cấp các tùy chọn bổ sung để lưu các tin nhắn email ở định dạng MHTML. Bộ liệt kê MhtFormatOptions cho phép ghi thêm thông tin email vào MHTML đầu ra. Các trường bổ sung sau có thể được ghi:
- WriteHeader - ghi tiêu đề email vào tệp đầu ra.
- WriteOutlineAttachments - ghi các tệp đính kèm dạng outline vào tệp đầu ra.
- WriteCompleteEmailAddress - ghi đầy đủ địa chỉ email vào tệp đầu ra.
- NoEncodeCharacters - không nên sử dụng mã hóa chuyển đổi cho ký tự.
- HideExtraPrintHeader - ẩn tiêu đề in thêm ở đầu tệp đầu ra.
- WriteCompleteToEmailAddress - ghi đầy đủ địa chỉ email người nhận vào tệp đầu ra.
- WriteCompleteFromEmailAddress - ghi đầy đủ địa chỉ email người gửi vào tệp đầu ra.
- WriteCompleteCcEmailAddress - ghi đầy đủ địa chỉ email của các người nhận CC vào tệp đầu ra.
- WriteCompleteBccEmailAddress - ghi đầy đủ địa chỉ email của các người nhận BCC vào tệp đầu ra.
- RenderCalendarEvent - ghi văn bản từ sự kiện lịch vào tệp đầu ra.
- SkipByteOrderMarkInBody - ghi byte Byte Order Mark (BOM) vào tệp đầu ra.
- RenderVCardInfo - ghi văn bản từ VCard AlternativeView vào tệp đầu ra.
- DisplayAsOutlook - hiển thị tiêu đề From.
- RenderTaskFields - ghi các trường Task cụ thể vào tệp đầu ra.
- None - Không có cài đặt nào được chỉ định.
Đoạn mã dưới đây cho bạn thấy cách chuyển đổi các tệp EML sang MHTML với các cài đặt tùy chọn.
Render Sự kiện Lịch khi Chuyển đổi sang MHTML
Cái MhtFormatOptions.RenderCalendarEvent hiển thị các sự kiện Lịch vào MTHML đầu ra. Đoạn mã dưới đây cho bạn cách render các sự kiện lịch khi chuyển đổi sang MHTML.
Xuất Email sang MHT mà không có Hình ảnh Nhúng
Xuất Email sang MHT với TimeZone Tùy chỉnh
MailMessage class cung cấp setTimeZoneOffset thuộc tính để đặt Timezone tùy chỉnh khi xuất sang MHT. Đoạn mã dưới đây cho bạn thấy cách xuất email sang MHT với TimeZone tùy chỉnh.
MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());
// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);
MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);
Xuất Email sang EML
Đoạn mã dưới đây cho bạn thấy cách xuất email sang định dạng EML.
Lưu Email dưới dạng HTML
Cái HtmlSaveOptions lớp cho phép bạn xuất nội dung tin nhắn ra HTML. Đoạn mã dưới đây cho bạn thấy cách lưu một tin nhắn dưới dạng HTML.
Lưu Tin nhắn Email dưới dạng HTML với Đường dẫn Tương đối tới Tài nguyên
Khi xuất tin nhắn email sang định dạng HTML, có thể chọn lưu tài nguyên email với đường dẫn tương đối. Tính năng này cung cấp sự linh hoạt hơn trong cách liên kết tài nguyên trong tệp HTML đầu ra, giúp việc chia sẻ và hiển thị email đã lưu trên các hệ thống khác nhau dễ dàng hơn. HtmlSaveOptions.UseRelativePathToResources thuộc tính cung cấp khả năng lưu tài nguyên với đường dẫn tương đối. Giá trị mặc định của thuộc tính là false (tài nguyên được lưu với đường dẫn tuyệt đối). Khi đặt thành true, tài nguyên sẽ được lưu với đường dẫn tương đối. Các tệp HTML có đường dẫn tương đối linh hoạt hơn và có thể được xem đúng bất kể cấu trúc tệp môi trường lưu trữ. Bạn có thể chọn giữa đường dẫn tuyệt đối và tương đối tùy theo yêu cầu. Bạn có thể định nghĩa đường dẫn tùy chỉnh cho tài nguyên bằng cách sử dụng ResourceHtmlRenderingHandler sự kiện.
Lưu với Đường dẫn Tương đối Mặc định tới Tài nguyên
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
Trong trường hợp này, tài nguyên sẽ được lưu trong thư mục [html file name].files, cùng đường dẫn với tệp .html và HTML sẽ tham chiếu tài nguyên qua các đường dẫn tương đối.
Lưu với Đường dẫn Tuyệt đối tới Tài nguyên
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
Giống như trường hợp đầu tiên, tài nguyên sẽ được lưu trong thư mục [html file name].files theo mặc định, nhưng HTML sẽ tham chiếu tài nguyên bằng các đường dẫn tuyệt đối.
Đường dẫn Tương đối Tùy chỉnh sử dụng Sự kiện ResourceHtmlRenderingHandler
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
if (sender instanceof AttachmentBase) {
AttachmentBase attachment = (AttachmentBase) sender;
// Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
}
}
});
msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);
Bằng cách sử dụng ResourceHtmlRenderingHandler sự kiện, bạn có thể đặt đường dẫn tài nguyên tùy chỉnh dưới dạng tương đối hoặc tuyệt đối. Khi tùy chỉnh đường dẫn với ResourceHtmlRenderingHandler trình xử lý sự kiện, và vì UseRelativePathToResources được đặt thành true, bạn nên gán một đường dẫn tương đối tới PathToResourceFile thuộc tính để đảm bảo tham chiếu đúng.
Giữ lại Biểu tượng Tùy chỉnh trong Tin nhắn khi Chuyển đổi sang HTML
Đôi khi, tin nhắn chứa các tệp đính kèm nội tuyến, hiển thị dưới dạng hình ảnh biểu tượng trong phần nội dung tin. Những tin nhắn như vậy có thể gây vấn đề khi chuyển đổi sang HTML, vì các hình ảnh biểu tượng bị mất. Điều này xảy ra do biểu tượng của tệp đính kèm không được lưu trực tiếp trong tin nhắn.
Người dùng Aspose.Email có thể tùy chỉnh các biểu tượng cho tệp đính kèm khi chuyển đổi tin nhắn sang HTML. Đối với việc này, HtmlSaveOptions.ResourceHtmlRendering sự kiện được sử dụng để tùy chỉnh việc hiển thị các tệp tài nguyên (như tệp đính kèm) khi lưu tin nhắn email dưới dạng tệp HTML. Trong mẫu mã dưới đây, trình xử lý sự kiện được dùng để đặt đường dẫn tới các tệp tài nguyên (icon) một cách động dựa trên loại nội dung của tệp đính kèm. Điều này cho phép tùy chỉnh việc hiển thị tài nguyên trong HTML đầu ra dựa trên loại tệp.
HtmlSaveOptions options = new HtmlSaveOptions();
options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {
AttachmentBase attachment = (AttachmentBase) sender;
e.setCaption(attachment.getContentType().getName());
if (attachment.getContentType().getName().endsWith(".pdf")) {
e.setPathToResourceFile("pdf_icon.png");
} else if (attachment.getContentType().getName().endsWith(".docx")) {
e.setPathToResourceFile("word_icon.jpg");
} else if (attachment.getContentType().getName().endsWith(".jpg")) {
e.setPathToResourceFile("jpeg_icon.png");
} else {
e.setPathToResourceFile("not_found_icon.png");
}
}
});
options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);
String fileName = "message.msg";
MailMessage mailMessage = MailMessage.load(fileName);
mailMessage.save("fileName.html", options);
Đặt Thời gian và Múi giờ khi Lưu EML dưới dạng HTML
Aspose.Email người dùng có thể đặt định dạng hiển thị thời gian và múi giờ trong HtmlSaveOptions. Thuộc tính HeadersFormattingOptions lớp cho phép chỉ định các tùy chọn định dạng tiêu đề khi lưu MailMessage sang định dạng Mhtml hoặc Html. Các phương thức sau của HtmlFormatOptions lớp xác định các trường sẽ được hiển thị trong tệp đầu ra:
- RenderCalendarEvent - Chỉ ra rằng văn bản từ sự kiện lịch nên được ghi vào mhtml đầu ra.
- RenderVCardInfo - Chỉ ra rằng văn bản từ VCard AlternativeView nên được ghi vào HTML đầu ra.
Đoạn mẫu mã dưới đây cho thấy cách thiết lập thời gian và múi giờ khi lưu EML sang HTML:
MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");
Lưu dưới dạng HTML mà không nhúng tài nguyên
Lưu Tin nhắn dưới dạng Tệp Mẫu Outlook (.oft)
Đoạn mã dưới đây cho bạn thấy cách lưu một tin nhắn dưới dạng tệp mẫu Outlook (.oft).