Chuyển đổi EML sang HTML

Chuyển đổi EML sang HTML

Để tích hợp nội dung email vào các ứng dụng web, việc chuyển đổi EML sang HTML là lựa chọn phù hợp, tạo ra bản trình bày email hấp dẫn về mặt hình ảnh.

Để chuyển đổi EML sang HTML, bạn sẽ cần các lớp sau:

  • MailMessage class được sử dụng để tạo một đối tượng đại diện cho tin email. Nó cho phép truy cập các thuộc tính của tin, như tiêu đề, nội dung, người gửi và địa chỉ người nhận, v.v. Với các phương thức của nó, bạn có thể tạo, tải và phân tích, sửa đổi, lưu email, hoặc thực hiện các thao tác khác với chúng.
  • SaveOptions class cung cấp các tùy chọn để lưu các tin email ở nhiều định dạng khác nhau. Nó cho phép người dùng tùy chỉnh cách lưu các tin email trong các định dạng khác nhau. Với lớp này, người dùng có thể chỉ định các tùy chọn lưu tệp đính kèm, tiêu đề, siêu dữ liệu và thuộc tính của tin email, đặt các tùy chọn mã hóa hoặc chọn có lưu tin với mã hóa hay không.

Trong đoạn mã mẫu dưới đây, các lớp này hoạt động cùng nhau để tải một tệp EML hiện có và chỉ định định dạng tin nhắn là EML. Sau đó, chúng lưu tin email đã tải dưới dạng tệp HTML bằng cách sử dụng các tùy chọn lưu HTML mặc định đã chỉ định:

  1. Sử dụng MailMessage.Load() phương thức để tải tệp hiện có vào đối tượng MailMessage, chỉ định định dạng tin nhắn.
  2. Lưu đối tượng MailMessage đã tải dưới dạng tệp HTML bằng cách sử dụng lưu phương thức. Sử dụng SaveOptions.DefaultHtml() để chỉ định các tùy chọn lưu cho định dạng HTML.
// Initialize and Load an existing EML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.eml");
message.Save("output.html", SaveOptions.DefaultHtml);

Lưu tài nguyên EML vào tệp riêng

Aspose.Email cung cấp ResourceRenderingMode enumeration cho phép các nhà phát triển thao tác với tài nguyên trong tệp HTML. Trong đoạn mã mẫu dưới đây, enum này được dùng để lưu tài nguyên vào tệp và chèn vào HTML thẻ ‘src’ với đường dẫn tới tệp này:

  1. Tải tin email từ tệp nguồn bằng cách sử dụng MapiMessage.Load phương thức.
  2. Tạo một thể hiện của HtmlSaveOptions với các tùy chọn render và tài nguyên đã chỉ định.
  3. Lưu tin email đã tải dưới dạng tệp HTML tới vị trí mục tiêu bằng cách sử dụng Lưu phương thức với tham số HtmlSaveOptions.
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target.html"), htmlSaveOptions);

Nhúng tài nguyên vào tệp HTML

Trong một số trường hợp, cần nhúng tài nguyên, chẳng hạn như hình ảnh, trực tiếp vào tệp HTML để phân phối và trình bày liền mạch. Với Aspose.Email for .NET, bạn có thể dễ dàng thực hiện điều này bằng cách sử dụng ResourceRenderingMode enumeration:

  1. Tải tin email từ tệp nguồn bằng cách sử dụng MapiMessage.Load phương thức.
  2. Tạo một mới HtmlSaveOptions đối tượng và đặt thuộc tính ResourceRenderingMode thành EmbedIntoHtml.
  3. Lưu tin email đã tải dưới dạng tệp HTML bằng cách sử dụng Lưu phương thức, chỉ định đường dẫn tệp mục tiêu và truyền đối tượng HtmlSaveOptions làm tham số để nhúng tài nguyên vào tệp HTML.
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml
};
msg.Save(Path.Combine("target.html"), htmlSaveOptions);

Chuyển đổi EML sang ICS

Đoạn mã mẫu dưới đây minh họa cách trích xuất dữ liệu sự kiện lịch từ tệp EML và lưu nó vào một tệp ICS riêng để sử dụng hoặc thao tác thêm.

// Load the EML file
var eml = MailMessage.Load("message.eml");
// Find the alternate view with MediaType "text/calendar" (ICS)
var icsView = eml.GetAlternateViewContent("text/calendar");
// If an ICS view is found, save it to a file
if (icsView != null)
{
    File.WriteAllText("appointment.ics", icsView);
}

Tùy chỉnh

Aspose.Email for .NET cung cấp công cụ để tùy chỉnh nội dung ICS (iCalendar) được trích xuất từ các tệp EML (Thư điện tử).

Tùy chỉnh chi tiết sự kiện

Đoạn mã mẫu dưới đây minh họa cách đặt các chi tiết khác nhau của cuộc hẹn, như tóm tắt, địa điểm và mô tả. Code sử dụng Appointment class đại diện cho các cuộc hẹn hoặc sự kiện lịch trong định dạng ICS (iCalendar). Lớp này cung cấp các thuộc tính và phương thức để tạo, sửa đổi và quản lý sự kiện lịch một cách lập trình.

// Load the EML file
var eml = MailMessage.Load("message.eml");
// Find the alternate view with MediaType "text/calendar" (ICS)
var icsView = eml.GetAlternateViewContent("text/calendar");
// If an ICS view is found, load it to Appointment class object
var appointment = Appointment.Load(new MemoryStream(Encoding.UTF8.GetBytes(icsView)));

// Customize the event details
appointment.Summary = "Customized Event Summary";
appointment.Location = "Customized Location";
appointment.Description = "Customized Event Description";

// Add or modify attendees as needed
appointment.Attendees.Clear();
appointment.Attendees.Add("custom@example.com");

// Save the customized ICS content to a file
appointment.Save("customized_appointment.ics");

Tạo mẫu lặp lại

Đoạn mã mẫu dưới đây minh họa cách tạo mẫu lặp lại hàng tuần cho một cuộc hẹn, trong đó cuộc hẹn diễn ra mỗi 5 tuần vào thứ Bảy. Code sử dụng Recurrence thuộc tính của Appointment class cho phép lấy hoặc đặt mẫu lặp lại.

var pattern = new  WeeklyRecurrencePattern(5, 7);
pattern. EndDate = new DateTime(2023, 8, 7);

appointment.Recurrence = pattern;

Thêm EML vào MBOX

MBOX là một định dạng thường được sử dụng để lưu trữ nhiều tin email trong một tệp duy nhất, phù hợp cho việc lưu trữ và di chuyển email. Sử dụng MboxrdStorageWriter class để ghi các tin email vào tệp MBOX. Đoạn mã mẫu dưới đây minh họa cách thực hiện nhiệm vụ này:

using (var message = MailMessage.Load("inputFile.eml")){
	using (var writer = new MboxrdStorageWriter("output.mbox", false)){
			writer.WriteMessage(message);
	}
} 

Chuyển đổi EML sang MHTML

Với Aspose.Email for .NET, bạn có thể dễ dàng chuyển đổi các tệp EML sang định dạng MHTML cho nhiều mục đích như lưu trữ, tương thích, xem ngoại tuyến, v.v. Tải tin email bằng MailMessage.Load, sau đó sử dụng MhtSaveOptions class như một tham số cho MailMessage.Save phương thức để chỉ định định dạng tệp đầu ra khi lưu tin nhắn thành tệp riêng biệt:

// Initialize and Load an existing EML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.eml");
var mhtSaveOptions = new MhtSaveOptions;
message.Save("output.mhtml", mhtSaveOptions);

Cái MhtSaveOptions class cung cấp nhiều tùy chọn để tùy chỉnh các tệp MHTML đầu ra đáp ứng yêu cầu cụ thể của bạn:

  • Giữ nguyên định dạng ngày gốc. Bạn có thể chọn giữ định dạng gốc của các tin email trong quá trình chuyển đổi:

    saveOptions.PreserveOriginalDate = true;
    
  • Đặt mã hóa đầu ra. Bạn có thể chỉ định mã hóa sẽ được sử dụng khi ghi các tệp MHTML đầu ra:

    saveOptions.OutputEncoding = Encoding.UTF8; 
    
  • Bao gồm tệp đính kèm. Điều này hữu ích nếu bạn muốn giữ nguyên tệp đính kèm khi chuyển đổi email sang định dạng MHTML:

    saveOptions.SaveAttachments = true;
    

Chuyển đổi EML sang MSG

Bạn cần di chuyển dữ liệu email, lưu trữ tin nhắn, hay tích hợp với Microsoft Outlook, Aspose.Email cung cấp các giải pháp để đạt được mục tiêu của bạn. Các tệp MSG được Microsoft Outlook sử dụng rộng rãi. Để chuyển đổi EML sang MSG, sử dụng MailMessage.Load phương thức để tải tệp EML hiện có, chỉ định cách nó sẽ được tải với EmlLoadOptions.

Đoạn mã mẫu dưới đây minh họa cách chuyển đổi các tệp EML sang định dạng MSG:

// Load mail message
using (var message = MailMessage.Load("sourceFile.eml", new EmlLoadOptions())){
// Save as MSG
var msgSaveOptions = new MsgSaveOptions;
message.Save("output.msg", MsgSaveOptions);
} 

Chuyển đổi EML sang OFT

Để chuyển đổi các tệp EML sang định dạng Outlook Template (OFT), tải tin email hiện có bằng MailMessage.Load phương thức và lưu nó với MailMessage.Save chỉ định các tùy chọn mặc định để lưu tin nhắn ở định dạng OFT:

// load the EML file to be converted
var message = MailMessage.Load("My File.eml"); 
// save EML as a OFT 
message.Save("Saved File.oft", SaveOptions.DefaultOft);

Thêm EML vào PST

Để chuyển đổi các tệp EML sang định dạng Personal Storage Table (PST), tải tin nhắn bằng MapiMessage.Load phương thức, tạo tệp đầu ra với PersonalStorage.Create và thêm email vào thư mục Inbox đã tạo trong tệp lưu trữ bằng cách sử dụng AddMessage:

using (var msg = MapiMessage.Load("sourceFile.eml", new EmlLoadOptions()))
{
    using (var personalStorage = PersonalStorage.Create("outputFile.pst", FileFormatVersion.Unicode))
  {
        var inbox = personalStorage.RootFolder.AddSubFolder("Inbox");
        inbox.AddMessage(msg);
  }
}

Thêm EML vào OST

Các nhà phát triển có thể dễ dàng chuyển đổi các tệp EML sang định dạng Outlook Offline Storage Table (OST), cho phép tích hợp với Microsoft Outlook. Đoạn mã mẫu dưới đây minh họa cách thêm một tin EML vào tệp OST:

using (var ost = PersonalStorage.FromFile("storage.ost"))
{
    // Load the EML file
    var msg = MapiMessage.Load("message.eml", new EmlLoadOptions());

    // Add the EML message to the OST file
    var folderInfo = ost.RootFolder.GetSubFolder("Inbox");
    folderInfo.AddMessage(msg);
}

Cái EmlLoadOptions tham số chỉ định các tùy chọn bổ sung khi tải các tệp EML, chẳng hạn như giữ nguyên định dạng tin nhắn nhúng, loại bỏ chữ ký và hơn nữa.

Chuyển đổi EML sang VCF

Aspose.Email for .NET cung cấp chức năng chuyển đổi các tệp EML sang định dạng vCard (VCF), cho phép các nhà phát triển trích xuất thông tin liên hệ từ tin email. Để mục đích này, thư viện cung cấp GetAlternateViewContent phương thức của MailMessage class cho phép các nhà phát triển truy cập các chế độ xem thay thế trong tin email và trích xuất nội dung VCF được nhúng trong tệp EML để sử dụng tiếp:

// Load the EML file
var eml = MailMessage.Load("message.eml");
// Find the alternate view with MediaType "text/vcard" (VCF)
var vcfView = eml.GetAlternateViewContent("text/vcard");
// If an VCF view is found, save it to a file
if (vcfView != null)
{
    File.WriteAllText("contact.vcf", vcfView);
}