Tải và Lưu Tin Nhắn Email
Tải Tin Nhắn Email
Tải từ EML
Phần này mô tả cách tải tệp EML vào đối tượng MailMessage bằng cách sử dụng EmlLoadOptions class. Lớp EmlLoadOptions cung cấp nhiều tùy chọn để tùy chỉnh cách tải tệp EML, chẳng hạn như bảo tồn định dạng tin nhắn nhúng hoặc kiểm soát hành vi tải tệp đính kèm TNEF.
- Khởi tạo một thể hiện của EmlLoadOptions.
- Cấu hình các tùy chọn tải theo nhu cầu.
- Sử dụng MailMessage.Load() phương thức để tải tệp EML với các tùy chọn được chỉ định.
using Aspose.Email;
// Initialize EmlLoadOptions
var loadOptions = new EmlLoadOptions
{
// Configure load options
PreferredTextEncoding = Encoding.UTF8, // Sets preferred encoding for the message
PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
PreserveTnefAttachments = true, // Control TNEF attachment loading
RemoveSignature = false // Do not remove the signature
};
// Load the EML file
var eml = MailMessage.Load("file.eml", loadOptions);
Thuộc tính của EmlLoadOptions
- PreferredTextEncoding: Đặt mã hoá ưu tiên cho tiêu đề và phần thân tin nhắn. Mặc định là
null. - PreserveEmbeddedMessageFormat: Cho biết liệu có nên bảo tồn định dạng của các tin nhắn nhúng trong quá trình tải hay không. Mặc định là
false. - PreserveTnefAttachments: Điều khiển hành vi tải tệp đính kèm TNEF. Mặc định là
false. - RemoveSignature: Xác định liệu chữ ký có nên bị xóa khi tải hay không. Mặc định là
false.
Bảo tồn Định dạng Tin nhắn Nhúng
Tải Tin Nhắn Có Chữ Ký/Không Có Chữ Ký
Việc giữ lại chữ ký được hỗ trợ mặc định khi tải tệp EML. Để loại bỏ chữ ký, bạn có thể đặt LoadOptions.RemoveSignature thuộc tính thành true.
Mẫu mã dưới đây hiển thị cách loại bỏ chữ ký khi tải một tin nhắn:
var msg = MailMessage.Load(fileName, new EmlLoadOptions() { RemoveSignature = true});
Tải từ EMLX
Phần tiếp theo đề cập đến việc tải tệp EMLX bằng EmlxLoadOptions class. Lớp này cung cấp các tùy chọn tương tự như EmlLoadOptions, cho phép kiểm soát mã hóa, loại bỏ chữ ký và hơn nữa.
- Khởi tạo EmlxLoadOptions.
- Cấu hình các thuộc tính nếu cần.
- Sử dụng MailMessage.Load() phương pháp để tải tệp EMLX.
using Aspose.Email;
// Instantiate EmlxLoadOptions
var loadOptions = new EmlxLoadOptions
{
// Configure load options
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
RemoveSignature = true // Remove signatures during loading
};
// Load the EMLX file
var emlx = MailMessage.Load("file.emlx", loadOptions);
Thuộc tính của EmlxLoadOptions
- PreferredTextEncoding: Đặt mã hoá ưu tiên cho tiêu đề và phần thân tin nhắn. Mặc định là
null. - PreserveEmbeddedMessageFormat: Cho biết liệu có bảo tồn định dạng của các tin nhắn nhúng. Mặc định là
false. - RemoveSignature: Xác định liệu có loại bỏ chữ ký trong quá trình tải hay không. Mặc định là
false.
Tải từ HTML
Tìm hiểu cách tải tệp HTML vào MailMessage bằng cách sử dụng HtmlLoadOptions class. Lớp này được thiết kế đặc biệt để xử lý nội dung HTML với các tùy chọn quản lý tài nguyên và thêm chế độ xem văn bản thuần.
- Khởi tạo một thể hiện của HtmlLoadOptions.
- Cấu hình các thuộc tính cần thiết.
- Sử dụng MailMessage.Load() phương pháp để tải tệp HTML với các tùy chọn đã chỉ định.
using Aspose.Email;
// Initialize HtmlLoadOptions
var loadOptions = new HtmlLoadOptions
{
// Configure load options
PathToResources = "resources/", // Path to directory containing resource files
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
ShouldAddPlainTextView = true // Add plain text view of the body
};
// Load the HTML file
var html = MailMessage.Load("file.html", loadOptions);
Thuộc tính của HtmlLoadOptions
- PathToResources: Xác định đường dẫn tới thư mục chứa các tệp tài nguyên (ví dụ: hình ảnh).
- PreferredTextEncoding: Đặt mã hóa ưu tiên cho tiêu đề và nội dung tin nhắn. Mặc định là
null. - PreserveEmbeddedMessageFormat: Xác định có nên giữ nguyên định dạng của các tin nhắn nhúng hay không. Mặc định là
false. - ShouldAddPlainTextView: Xác định có nên thêm chế độ xem văn bản thuần cho nội dung tin nhắn hay không. Mặc định là
false.
Tải từ MHTML
Phần này giải thích cách tải tệp MHTML bằng cách sử dụng MhtmlLoadOptions class. Lớp MhtmlLoadOptions cung cấp các tùy chọn để quản lý mã hóa, giữ định dạng tin nhắn nhúng và xử lý tệp đính kèm TNEF.
- Tạo một thể hiện của MhtmlLoadOptions.
- Cấu hình các thuộc tính mong muốn.
- Tải tệp MHTML bằng cách sử dụng MailMessage.Load() phương thức.
using Aspose.Email;
// Create MhtmlLoadOptions
var loadOptions = new MhtmlLoadOptions
{
// Set load options
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
PreserveTnefAttachments = true, // Handle TNEF attachments
RemoveSignature = false // Keep the signature
};
// Load the MHTML file
var mhtml = MailMessage.Load("file.mht", loadOptions);
Thuộc tính của MhtmlLoadOptions
- MessageFormat: Đại diện cho định dạng tin nhắn email, có thể là EML, MSG hoặc MHTML. Mặc định là EML.
- PreferredTextEncoding: Đặt mã hoá ưu tiên cho tiêu đề và phần thân tin nhắn. Mặc định là
null. - PreserveEmbeddedMessageFormat: Xác định có nên giữ nguyên định dạng của các tin nhắn nhúng hay không. Mặc định là
false. - PreserveTnefAttachments: Điều khiển hành vi tải tệp đính kèm TNEF. Mặc định là
false. - RemoveSignature: Xác định liệu có loại bỏ chữ ký trong quá trình tải hay không. Mặc định là
false.
Tải từ MSG
Phần này giải thích cách tải tệp MSG vào đối tượng MailMessage bằng cách sử dụng MsgLoadOptions class. Lớp MsgLoadOptions cung cấp nhiều thuộc tính để xử lý cách tải tệp MSG, bao gồm các tùy chọn giữ nội dung RTF hoặc quản lý tệp đính kèm TNEF.
- Tạo một thể hiện của MsgLoadOptions.
- Đặt các thuộc tính mong muốn để tùy chỉnh việc tải.
- Tải tệp MSG bằng cách sử dụng MailMessage.Load() phương thức.
using Aspose.Email;
// Create MsgLoadOptions
var loadOptions = new MsgLoadOptions
{
// Set load options
KeepOriginalEmailAddresses = true, // Preserve original email addresses
PreferredTextEncoding = Encoding.UTF8, // Set preferred encoding
PreserveRtfContent = true, // Keep RTF content in the message
PreserveTnefAttachments = true, // Handle TNEF attachments
RemoveSignature = false, // Keep the signature
Timeout = 5000 // Set timeout to 5 seconds
};
// Load the MSG file
var msg = MailMessage.Load("file.msg", loadOptions);
Thuộc tính của MsgLoadOptions
- KeepOriginalEmailAddresses: Cho biết có nên giữ địa chỉ email gốc hay không. Mặc định là
false. - PreferredTextEncoding: Xác định mã hóa ưu tiên cho tiêu đề và nội dung tin nhắn. Mặc định là
null. - PreserveEmbeddedMessageFormat: Xác định liệu định dạng của các tin nhắn nhúng có nên được giữ nguyên hay không. Mặc định là
false. - PreserveRtfContent: Xác định có nên giữ nội dung thân RTF trong
MailMessage. Mặc định làfalse. - PreserveTnefAttachments: Quản lý hành vi tải tệp đính kèm TNEF. Mặc định là
false. - RemoveSignature: Quyết định có nên loại bỏ chữ ký trong quá trình tải hay không. Mặc định là
false. - Thời gian chờ: Giới hạn thời gian định dạng bằng miligiây trong quá trình chuyển đổi. Mặc định là 3000 ms.
Tải từ TNEF
Tìm hiểu cách tải tệp TNEF eml bằng TnefLoadOptions class. Lớp này cung cấp các tùy chọn để quản lý mã hoá và loại bỏ chữ ký trong quá trình tải.
- Khởi tạo TnefLoadOptions.
- Cấu hình các thuộc tính theo nhu cầu.
- Sử dụng MailMessage.Load() phương thức để tải tệp TNEF.
using Aspose.Email;
// Instantiate TnefLoadOptions
var loadOptions = new TnefLoadOptions
{
// Configure load options
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
RemoveSignature = true // Remove signatures during loading
};
// Load the TNEF file
var tnef = MailMessage.Load("file.eml", loadOptions);
Thuộc tính của TnefLoadOptions
- MessageFormat: Đại diện cho định dạng tin nhắn email, như EML, MSG, hoặc MHTML. Mặc định là EML.
- PreferredTextEncoding: Đặt mã hoá ưu tiên cho tiêu đề và phần thân tin nhắn. Mặc định là
null. - PreserveEmbeddedMessageFormat: Cho biết liệu có bảo tồn định dạng của các tin nhắn nhúng. Mặc định là
false. - RemoveSignature: Xác định liệu có loại bỏ chữ ký trong quá trình tải hay không. Mặc định là
false.
Phát hiện Các Đị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.
Lưu và Chuyển Đổi Tin Nhắn
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.
Lưu thành EML
Đ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.
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.
Giữ Nguyên 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.
Giữ Ngày
Cái MsgSaveOptions class cho phép bạn lưu tin nhắn nguồn dưới dạng tệp Outlook Message (MSG) giữ nguyên ngày tháng. Đoạn mã dưới đây cho bạn thấy cách lưu dưới dạng MSG với Ngày Được Giữ Nguyên.
Lưu EML thành 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.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.DefaultMhtml;
saveOptions.PreserveOriginalDate = false; // save a message date as UTC date
// Initialize and load an existing EML file
using (MailMessage mailMessage = MailMessage.Load(folderPath + "Message.eml"))
{
mailMessage.Save(folderPath + "Message_out.mhtml", saveOptions);
}
Tùy chọn Chuyển đổi
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 xuất.WriteOutlineAttachments– ghi các tệp đính kèm dạng outline vào tệp xuất.WriteCompleteEmailAddress– ghi đầy đủ địa chỉ email vào tệp xuất.NoEncodeCharacters– không nên sử dụng mã hoá chuyển đổi ký tự.HideExtraPrintHeader– ẩn tiêu đề in bổ sung ở đầu tệp xuất.WriteCompleteToEmailAddress– ghi đầy đủ địa chỉ email của người nhận vào tệp xuất.WriteCompleteFromEmailAddress– ghi đầy đủ địa chỉ email của người gửi vào tệp xuất.WriteCompleteCcEmailAddress– ghi đầy đủ địa chỉ email của bất kỳ người nhận sao chép (CC) nào vào tệp xuất.WriteCompleteBccEmailAddress– ghi đầy đủ địa chỉ email của bất kỳ người nhận ẩn danh (BCC) nào vào tệp xuất.RenderCalendarEvent– ghi văn bản từ sự kiện lịch vào tệp xuất.SkipByteOrderMarkInBody– ghi các byte Byte Order Mark (BOM) vào tệp xuất.RenderVCardInfo– ghi văn bản từ VCard AlternativeView vào tệp xuất.DisplayAsOutlook– hiển thị tiêu đề From.RenderTaskFields– ghi các trường Task cụ thể vào tệp xuất.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.
Hiển thị Sự kiện Lịch
Cái MhtFormatOptions.RenderCalendarEvent kết xuất các sự kiện Lịch vào MTHML đầu ra. Đoạn mã sau đây cho bạn thấy cách kết xuất 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 ra MHT với Múi giờ tùy chỉnh
MailMessage class cung cấp TimeZoneOffset 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.
Điều chỉnh Phông chữ
Lưu EML thành 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 mà không có Tài nguyên Nhúng
Lưu EML thành 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).
Chuyển đổi EML sang MSG (MailMessage sang MapiMessage)
Để chuyển đổi một MailMessage đối tượng được tải từ tệp EML sang một MapiMessage đối tượng, sử dụng MapiConversionOptions lớp. Việc chuyển đổi này thường cần thiết vì hai đối tượng này phục vụ các mục đích khác nhau và đáp ứng các nhu cầu riêng biệt trong xử lý email. MapiMessage được thiết kế đặc biệt để tương thích với Microsoft Outlook và Exchange Server, vì nó tuân thủ giao thức Messaging Application Programming Interface (MAPI). Điều này đảm bảo rằng các email được chuyển đổi sang tệp MSG hoàn toàn tương thích với các sản phẩm của Microsoft, cho phép chúng được mở, chỉnh sửa và quản lý trực tiếp trong Outlook.
Việc chuyển đổi này cũng cần thiết khi email phải được lưu trữ, lập chỉ mục hoặc xử lý bởi các hệ thống yêu cầu định dạng MAPI, ví dụ như lưu trữ PST/OST, OLM. The MapiConversionOptions lớp cho phép bạn chỉ định các tùy chọn bổ sung, chẳng hạn như giữ nguyên định dạng tin nhắn gốc, giữ nguyên ngày tháng gốc và nén phần thân RTF trong quá trình chuyển đổi. Đoạn mã mẫu dưới đây cho thấy cách tải một email từ tệp có định dạng .eml và chuyển đổi nó sang định dạng Outlook .msg, cho phép tùy chỉnh nhưng vẫn đảm bảo một số đặc điểm của email gốc được duy trì trong quá trình chuyển đổi.
- Tạo một thể hiện của
MapiConversionOptionsvà cấu hình các thuộc tính của nó. - Chuyển đổi
MailMessageđối tượng sang mộtMapiMessageđối tượng sử dụng các tùy chọn chuyển đổi đã cấu hình.
MailMessage eml = MailMessage.Load("email.eml", new EmlLoadOptions());
// Create an instance of MapiConversionOptions
var conversionOptions = new MapiConversionOptions
{
// Configure MapiConversionOptions
Format = OutlookMessageFormat.Unicode, // Use Unicode format for MSG
PreserveEmbeddedMessageFormat = true, // Preserve the format of embedded messages
PreserveOriginalAddresses = true, // Keep original email addresses
PreserveOriginalDates = true, // Preserve original dates
PreserveEmptyDates = false, // Generate new dates if original are empty
RemoveSignature = false, // Do not remove the signature
UseBodyCompression = true, // Enable RTF body compression
ForcedRtfBodyForAppointment = false // Disable forced RTF body for appointments
};
// Convert MailMessage to MapiMessage
MapiMessage msg = MapiMessage.FromMailMessage(eml, conversionOptions);
Thuộc tính khả dụng của MapiConversionOptions
-
ASCIIFormat: Trả về
MapiConversionOptionsđược cấu hình vớiOutlookMessageFormatở dạng ASCII, vớiPreserveSignatuređặt là false vàUseBodyCompressionđặt là false. Tùy chọn này hữu ích khi bạn cần một chuyển đổi sang định dạng ASCII thuần. -
UnicodeFormat: Trả về
MapiConversionOptionsvớiOutlookMessageFormatđặt thành Unicode, và cảPreserveSignaturevàUseBodyCompressionđặt là false. Sử dụng tùy chọn này để hỗ trợ ký tự đầy đủ hơn trong các tệp MSG. -
ForcedRtfBodyForAppointment: Khi đặt là true, buộc sử dụng thân RTF cho các cuộc hẹn lịch. Điều này hữu ích nếu bạn muốn đảm bảo tính tương thích với một số máy khách email nhất định. Mặc định là true.
-
Format: Xác định định dạng đầu ra cho tệp MSG. Nó có thể được đặt thành một trong hai
OutlookMessageFormat.ASCIIhoặcOutlookMessageFormat.Unicode, kiểm soát việc MSG đã chuyển đổi sẽ sử dụng mã hóa ASCII hay Unicode. -
PreserveEmbeddedMessageFormat: Xác định có nên giữ lại định dạng EML gốc của các tin nhắn nhúng trong quá trình chuyển đổi sang
MapiMessage. Đặt giá trị này thành true sẽ đảm bảo các email nhúng giữ nguyên cấu trúc gốc. Mặc định là false. -
PreserveEmptyDates: Khi đặt là true, sẽ giữ nguyên ngày lưu và chỉnh sửa gốc từ EML. Nếu không, các ngày mới sẽ được tạo nếu những ngày gốc trống.
-
PreserveOriginalAddresses: Nếu đặt là true, sẽ giữ nguyên địa chỉ email gốc mà không xác thực. Điều này hữu ích khi làm việc với các địa chỉ email có thể không đáp ứng tiêu chuẩn nghiêm ngặt nhưng cần được giữ nguyên. Mặc định là false.
-
PreserveOriginalDates: Đảm bảo ngày gửi và nhận gốc được giữ lại trong quá trình chuyển đổi. Cài đặt này thành true sẽ giữ các ngày này để độ chính xác lịch sử tốt hơn.
-
RemoveSignature: Kiểm soát việc chữ ký số, nếu có, sẽ được loại bỏ khỏi tin nhắn trong quá trình chuyển đổi hay không. Mặc định là false, có nghĩa là chữ ký sẽ được giữ trừ khi được loại bỏ một cách rõ ràng.
-
UseBodyCompression: Bật nén thân RTF nếu được đặt là true. Điều này có thể giúp giảm kích thước tệp MSG, đặc biệt khi xử lý các tin nhắn lớn với định dạng phong phú.