在 C# 中提取电子邮件内容
显示电子邮件信息
该 MailMessage 表示一封电子邮件消息并允许开发人员访问邮件属性。头信息(在 提取电子邮件头)可以以不同方式提取和操作。本文解释了如何在屏幕上显示选定的电子邮件标头信息和邮件正文。要在屏幕上显示电子邮件信息,请按以下步骤操作:
- 创建该类的实例 MailMessage 类。
- 将电子邮件消息加载到 MailMessage 实例。
- 在屏幕上显示电子邮件内容。
以下代码片段展示了如何在屏幕上显示电子邮件信息。
// Create MailMessage instance by loading an Eml file
var message = MailMessage.Load("test.eml", new EmlLoadOptions());
// Gets the sender info, recipient info, Subject, htmlbody and textbody
Console.Write("From:");
Console.WriteLine(message.From);
Console.Write("To:");
Console.WriteLine(message.To);
Console.Write("Subject:");
Console.WriteLine(message.Subject);
Console.WriteLine("HtmlBody:");
Console.WriteLine(message.HtmlBody);
Console.WriteLine("TextBody");
Console.WriteLine(message.Body);
提取电子邮件标头
电子邮件头是 Internet 和 RFC 定义的标准头字段集合,包含在 Internet 电子邮件中。可以使用 MailMessage 类。常见的标题类型在此定义: HeaderType 类。它是一个密封类,像普通枚举一样工作。要提取电子邮件的标头,请按以下步骤操作:
- 创建该类的实例 MailMessage 类。
- 在 MailMessage 类。
- 在加载电子邮件消息后,我们将获取其原始内容。
该 MailMessage class 本身包含 From、To、Cc、Subject 等属性。这些属性可以从头部中提取。
以下代码片段展示了如何提取电子邮件标题。
获取解码后的标题值
下面的代码片段展示了如何获取解码后的头部值。
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MailMessage mailMessage = MailMessage.Load(dataDir + "emlWithHeaders.eml");
string decodedValue = mailMessage.Headers.GetDecodedValue("Thread-Topic");
Console.WriteLine(decodedValue);
提取电子邮件正文
获取纯文本正文
该 正文 属性返回消息正文的纯文本表示。
string plainTextBody = mailMessage.Body;
注意:如果消息中存在 text/plain MIME 部分,属性返回其文本数据。否则,它返回来自的分离文本内容。 HtmlBody 属性不含 html 标记。
获取 HTML 正文为纯文本
该 MailMessage 类提供将消息的 HTML 正文提取为纯文本的功能。该 MailMessage 类提供了一个 GetHtmlBodyText 返回 HTML 正文纯文本的方法。此方法解析 HtmlBody 属性返回分离的纯文本内容,忽略 html 标记。该 GetHtmlBodyText 该方法接受一个布尔参数,指示正文是否应包含 URL。将参数设为 true 表示 HTML 正文应包含 URL。
以下代码片段演示了如何使用 GetHtmlBodyText 将电子邮件的 HTML 正文提取为纯文本的方法。
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Email();
MailMessage mail = MailMessage.Load(dataDir + "HtmlWithUrlSample.eml");
string body_with_url = mail.GetHtmlBodyText(true);// body will contain URL
string body_without_url = mail.GetHtmlBodyText(false);// body will not contain URL
Console.WriteLine("Body with URL: " + body_with_url);
Console.WriteLine("Body without URL: " + body_without_url);
访问 X.500 Exchange 地址
该 MailAddress 类具有 X500Address 属性用于公开消息中存在的 Exchange X.500 格式地址。它提供对 X.500(Exchange)地址字符串的只读访问。 MailAddress 实例并返回 X.500 地址(如果在消息元数据中包含),否则返回 null 或空。无需解析 —— 该属性返回原始的 X.500 字符串。
var mailMessage = MailMessage.Load(fileName);
string exaddr = mailMessage.From.X500Address;