在 C# 中解析 EML 文件
一种面向 .NET 应用程序的 EML 文件解析方案,无需使用 Microsoft Outlook 或第三方依赖。
在 C# 中提取并解析 EML 文件
Aspose.Email for .NET 是一款帮助开发者处理各种电子邮件格式(包括 EML)的 C# 库。它提供强大的 API 用于提取和解析 EML 文件,使开发者能够在 .NET 应用程序中处理邮件内容、头部、附件和元数据。这些特性对涉及邮件处理的应用(如归档、分析或自动化邮件工作流)至关重要。
Aspose.Email 解析邮件的关键特性
加载 EML 文件并提取其内容,包括发件人详情、收件人、主题和邮件正文。
提取包含关键元数据的头部信息,如路由和线程信息。
提取邮件正文内容:获取纯文本正文(正文的简易表示)或获取 HTML 正文的纯文本(包括超链接)。
提取附件:保存附件以满足合规或存储需求,或对附件文件进行进一步分析。
检索内容中嵌入的内联图像,以用于富媒体处理。
使用正文和头部属性,通过关键字或模式搜索邮件中的特定内容。
安装 C# API
要开始编码,请确保在项目中已安装该 API。您可以通过以下方式添加 API: NuGet 包管理器 在 Visual Studio 中:
在 Visual Studio 中打开您的项目。
导航至 Tools > NuGet Package Manager > Manage NuGet Packages for Solution(工具 > NuGet 包管理器 > 为解决方案管理 NuGet 包)。
在 NuGet 包管理器中搜索 “Aspose.Email”。
选择软件包并点击 Install(安装)。
或者,您可以使用包管理器控制台进行安装:
命令
PM> Install-Package Aspose.Email
安装完成后,您即可开始将其功能集成到应用程序中。
在 C# 中解析 EML 文件的步骤
使用以下方式进行基本的消息解析: Aspose.Email for .NET 仅需几行代码即可完成 API 调用。
- 将电子邮件加载到一个 MailMessage 对象使用 加载 方法与 EmlLoadOptions .
- 显示关键邮件信息:发件人、收件人和主题。
- 获取纯文本邮件正文并打印。
- 提取并显示 HTML 正文的纯文本(含 URL)。
- 提取并显示 HTML 正文的纯文本(无 URL)。
- 解码并打印特定的电子邮件头部(例如,Thread-Topic)。
系统要求
我们的 API 支持所有主流平台和操作系统。在执行以下代码之前,请确保您的系统已满足以下前提条件。
- Microsoft Windows 或兼容的操作系统,支持 .NET Framework、.NET Core 和 Xamarin 平台
- 开发环境,如 Microsoft Visual Studio
- 在项目中引用 Aspose.Email for .NET DLL——可通过上方的 Download 按钮从 NuGet 安装
解析 EML 文件 - C#
// Load the email message into the MailMessage instance
MailMessage message = MailMessage.Load(dataDir + "sample.eml", new EmlLoadOptions());
// Display sender, recipient, and subject information
Console.WriteLine("From: " + message.From);
Console.WriteLine("To: " + message.To);
Console.WriteLine("Subject: " + message.Subject);
// Extract and display plain text body
Console.WriteLine("Plain Text Body:");
Console.WriteLine(message.Body);
// Extract and display HTML body as plain text (with URLs)
string bodyWithUrls = message.GetHtmlBodyText(true);
Console.WriteLine("HTML Body (with URLs):");
Console.WriteLine(bodyWithUrls);
// Extract and display HTML body as plain text (without URLs)
string bodyWithoutUrls = message.GetHtmlBodyText(false);
Console.WriteLine("HTML Body (without URLs):");
Console.WriteLine(bodyWithoutUrls);
// Retrieve and decode a specific email header (e.g., Thread-Topic)
string decodedHeaderValue = message.Headers.GetDecodedValue("Thread-Topic");
Console.WriteLine("Decoded Header (Thread-Topic):");
Console.WriteLine(decodedHeaderValue);