将 EML 转换为 HTML
将 EML 转换为 HTML
要将电子邮件内容集成到 Web 应用程序中,EML 转 HTML 转换是正确的选择,可实现视觉上更具吸引力的邮件展示。
要将 EML 转换为 HTML,您需要以下类:
- MailMessage 类用于创建代表电子邮件的对象。它允许访问邮件属性,例如主题、正文、发件人和收件人地址等。通过其方法,您可以创建、加载、解析、修改、保存邮件,或对其进行其他操作。
- SaveOptions 类提供了以多种格式保存电子邮件的选项。它使用户能够自定义电子邮件在不同格式下的保存方式。使用此类,用户可以指定保存附件、头部、元数据以及电子邮件属性的选项,设置编码选项或选择是否以加密方式保存邮件。
在下面的代码示例中,这些类协同工作,加载现有的 EML 文件并将消息格式指定为 EML。随后,它们使用指定的默认 HTML 保存选项将加载的电子邮件保存为 HTML 文件:
- 使用 MailMessage.Load() 方法,将现有文件加载到指定消息格式的 MailMessage 对象中。
- 使用 保存 方法。使用 SaveOptions.DefaultHtml() 用于指定 HTML 格式的保存选项。
// Initialize and Load an existing EML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.eml");
message.Save("output.html", SaveOptions.DefaultHtml);
将 EML 资源另存为文件
Aspose.Email 提供了 ResourceRenderingMode 枚举,允许开发者在 HTML 文件中操作资源。在下面的代码示例中,此枚举用于将资源保存到文件并在 HTML 中插入指向该文件路径的 ‘src’ 标签:
- 使用 MapiMessage.Load 方法。
- 创建以下实例: HtmlSaveOptions 并指定渲染和资源选项。
- 使用 保存 方法,并使用 HtmlSaveOptions 参数。
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target.html"), htmlSaveOptions);
将资源嵌入 HTML 文件
在某些情况下,需要将资源(如图像)直接嵌入到 HTML 文件中,以实现无缝分发和展示。使用 Aspose.Email for .NET,您可以轻松使用 ResourceRenderingMode 枚举:
- 使用 MapiMessage.Load 方法。
- 创建一个新的 HtmlSaveOptions 对象并将 ResourceRenderingMode 属性设置为 EmbedIntoHtml。
- 使用 保存 方法,指定目标文件路径并将 HtmlSaveOptions 对象作为参数传入,以将资源嵌入到 HTML 文件中。
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml
};
msg.Save(Path.Combine("target.html"), htmlSaveOptions);
将 EML 转换为 ICS
以下代码示例演示如何从 EML 文件中提取日历事件数据并保存到单独的 ICS 文件以供进一步使用或操作。
// 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);
}
自定义
Aspose.Email for .NET 提供了用于自定义从 EML(电子邮件)文件中提取的 ICS(iCalendar)内容的工具。
自定义事件详情
以下代码示例演示如何设置约会的各项详细信息,如摘要、地点和描述。代码使用了 Appointment 类,表示以 ICS(iCalendar)格式的日历约会或事件。该类提供属性和方法,以编程方式创建、修改和管理日历事件。
// 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");
创建重复模式
以下代码示例演示如何为约会创建每周重复模式,其中约会每 5 周的星期六发生一次。代码使用了 重复 属性的 Appointment 类,用于获取或设置重复模式。
var pattern = new WeeklyRecurrencePattern(5, 7);
pattern. EndDate = new DateTime(2023, 8, 7);
appointment.Recurrence = pattern;
将 EML 添加到 MBOX
MBOX 是一种常用的将多个电子邮件存储在单个文件中的格式,适用于电子邮件归档和迁移。使用 MboxrdStorageWriter 类用于将电子邮件写入 MBOX 文件。以下代码示例演示如何执行此任务:
using (var message = MailMessage.Load("inputFile.eml")){
using (var writer = new MboxrdStorageWriter("output.mbox", false)){
writer.WriteMessage(message);
}
}
将 EML 转换为 MHTML
使用 Aspose.Email for .NET,您可以轻松将 EML 文件转换为 MHTML 格式,以用于归档、兼容性、离线查看等各种目的。使用 MailMessage.Load,然后使用 MhtSaveOptions 类作为参数传递给 MailMessage.Save 方法用于在将消息另存为文件时指定输出文件格式:
// 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);
该 MhtSaveOptions 类提供了多种选项,以自定义输出 MHTML 文件以满足您的特定需求:
-
保留原始日期格式。您可以选择在转换过程中保留电子邮件的原始日期格式:
saveOptions.PreserveOriginalDate = true; -
设置输出编码。您可以指定写入输出 MHTML 文件时使用的编码:
saveOptions.OutputEncoding = Encoding.UTF8; -
包括附件。如果您希望在将邮件转换为 MHTML 格式时保留附件,这会很有帮助:
saveOptions.SaveAttachments = true;
将 EML 转换为 MSG
无论您是需要迁移邮件数据、归档消息,还是与 Microsoft Outlook 集成,Aspose.Email 都提供了解决方案来实现您的目标。MSG 文件被 Microsoft Outlook 广泛使用。要进行 EML 到 MSG 的转换,请使用 MailMessage.Load 方法加载现有 EML 文件,指定其加载方式为 EmlLoadOptions.
以下代码示例演示如何将 EML 文件转换为 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);
}
将 EML 转换为 OFT
要将 EML 文件转换为 Outlook 模板 (OFT) 格式,请使用 MailMessage.Load 方法并使用 MailMessage.Save 指定将消息保存为 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);
将 EML 添加到 PST
要将 EML 文件转换为个人存储表 (PST) 格式,请使用 MapiMessage.Load 方法,将输出文件创建为 PersonalStorage.Create 并使用 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);
}
}
将 EML 添加到 OST
开发者可以轻松将 EML 文件转换为 Outlook 离线存储表 (OST) 格式,实现与 Microsoft Outlook 的集成。以下代码示例演示如何将 EML 消息添加到 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);
}
该 EmlLoadOptions 参数指定加载 EML 文件的其他选项,例如保留嵌入的消息格式、去除签名等。
将 EML 转换为 VCF
Aspose.Email for .NET 提供将 EML 文件转换为 vCard(VCF)格式的功能,允许开发者从电子邮件中提取联系信息。为此,库提供了 GetAlternateViewContent 方法的 MailMessage 类使开发者能够访问电子邮件中的备用视图并提取嵌入在 EML 文件中的 VCF 内容以供进一步使用:
// 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);
}