彩票走势图

借助邮件控件 Aspose.Email 读取 C# .NET 中的 Mbox 文件。

翻译|行业资讯|编辑:胡涛|2023-08-03 14:32:09.293|阅读 45 次

概述:在本文中,我们将探讨 mbox 格式,并为您提供代码片段以帮助您开始阅读 mbox 文件。您将学习如何解析 mbox 文件以及查看和保存其中包含的消息。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

Aspose.Email 是用于轻松的开发 email 功能的应用程序的一组控件,基于  ASP.NET 的Web应用、Web服务和Windows 应用。支持 Outlook PST, EML, MSG, and MHT 格式. 允许开发者直接与 SMTP, POP, FTP, 和 MS Exchange 服务器进行工作。支持邮件合并、行事历、定制邮件标题和内容、嵌入文件等

Aspose.Email 最新下载

在本文中,我们将探讨 mbox 格式,并为您提供代码片段以帮助您开始阅读 mbox 文件。您将学习如何解析 mbox 文件以及查看和保存其中包含的消息。

格式是一种广泛使用的用于存储电子邮件的文件格式。它有着悠久的历史,并受到多种流行电子邮件客户端的支持,包括 Thunderbird、Apple Mail 等。在 mbox 格式中,多封电子邮件以纯文本形式存储在一个文件中,方便归档和传输电子邮件数据。

mbox 格式有不同的变体,每种变体都有自己的实现细节。一些常见的 mbox 格式包括mboxrd, mboxo, mboxcl, mboxcl2. 这些变体主要在处理某些方面(例如消息分隔符和元数据)的方式上有所不同。使用 mbox 文件时了解这些差异非常重要,因为它们会影响电子邮件数据的兼容性和解析。

让我们仔细看看一些电子邮件客户端以及它们如何利用 mbox 格式:

  • Thunderbird:Thunderbird 是一种流行的开源电子邮件客户端,它使用 mbox 格式存储电子邮件。它将文件夹中的所有消息存储在扩展名为“.mbox”的单个 mbox 文件中。Thunderbird 为用户邮箱中的每个文件夹创建单独的 mbox 文件,从而轻松管理和备份电子邮件数据。

  • Apple Mail:Apple Mail 是 macOS 和 iOS 设备上的默认电子邮件客户端,也采用 mbox 格式。它将每个邮箱文件夹存储为单独的 mbox 文件,使在 Apple Mail 安装之间迁移或传输电子邮件数据变得简单。Apple Mail mbox 文件通常具有扩展名“.mbox”或“.mbox.plist”。

  • Eudora:Eudora是过去流行的电子邮件客户端,使用mbox格式来存储电子邮件。它使用了一种稍微修改过的 mbox 格式,称为“Eudora 邮箱格式”。Eudora 邮箱格式包含了 Eudora 特有的附加功能和元数据,例如标签和状态标志。

这些只是使用 mbox 格式的电子邮件客户端的几个示例。以编程方式处理 mbox 文件时,了解 mbox 格式及其在不同电子邮件客户端中的用法至关重要,因为它有助于确保电子邮件数据的兼容性和准确解析。

用于读取 Mbox 文件的 .NET API

为了在 C# 中使用 mbox 文件,我们将使用Aspose.Email for .NET。这个强大且功能丰富的库提供了广泛的电子邮件处理功能,包括读取 mbox 文件、提取消息和操作电子邮件数据。值得注意的是,Aspose.Email for .NET 提供了对各种 mbox 格式的全面支持,包括上面提到的格式。这使您可以无缝地使用来自不同电子邮件客户端的 mbox 文件,而不管具体的 mbox 实施细节如何。要利用 API 的强大功能,可以使用以下命令下载其 DLL 或从

PM> Install-Package Aspose.Email

打开 Mbox 文件

现在我们对 mbox 格式及其在不同电子邮件客户端中的用法有了更好的了解,让我们继续探索使用 Aspose.Email 处理 mbox 文件的功能和实践。要开始解析 mbox 文件,我们需要打开它。以下是打开 .mbox 文件的步骤:

  • 的实例来指定加载 mbox 文件所需的选项。

  •  然后,我们将设置为 false,以便在读取后自动关闭 mbox 文件,并指定 Encoding.UTF8 作为首选文本编码。

  • 最后,我们通过调用静态方法并传入源 MBOX 文件名和 MboxLoadOptions 实例来创建

这些步骤如以下代码片段所示:

var mboxLoadOptions = new MboxLoadOptions
{
LeaveOpen = false,
PreferredTextEncoding = Encoding.UTF8
};

var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions);


列出消息

打开 mbox 文件后,我们可以检索有关存储的消息的信息。以下代码片段演示了从 mbox 文件列出消息的两种方法。

方法一:使用EnumerateMessageInfo方法

类的EnumerateMessageInfo方法用于迭代消息并查看基本消息信息,例如主题、字段从、到和日期它还返回一个消息标识符(条目 ID),稍后可以使用该标识符来读取完整的消息内容。该方法具有以下特点:

  • 性能:与第二种方法相比,这种方法的性能更高,因为它只读取和查看基本消息信息。它避免了迭代期间解析和加载整个消息内容的开销。

  • 效率:通过仅获取必要的信息,可以最大限度地减少内存消耗和处理时间。这在处理包含大量消息的大型 mbox 文件时特别有用。

但是,需要注意的是,使用这种方法时,在初始迭代期间不会加载完整的消息内容。相反,仅获取必要的详细信息,这样可以加快初始处理速度。

方法迭代消息及其信息检索的过程。

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
foreach (var messageInfo in mbox.EnumerateMessageInfo())
{
Console.WriteLine(messageInfo.Subject);
Console.WriteLine(messageInfo.From);
Console.WriteLine(messageInfo.To);
Console.WriteLine(messageInfo.Date);
}
}

这样,我们就可以访问主题、发件人、收件人和日期等属性来显示相关详细信息。

方法 2:使用 EnumerateMessages 方法

第二种方法涉及使用方法直接迭代 mbox 文件中包含的 MailMessage 实例。这种方法在每次迭代期间读取并加载整个消息内容,从而能够立即访问完整的电子邮件信息。以下是该方法的一些关键方面:

  • 完整性:与第一种方法不同,此方法允许您访问和处理整个邮件内容,包括正文、附件、标头和其他部分。它提供了在迭代期间对完整电子邮件数据的全面访问。

  • 方便:当您想要对完整消息执行操作时,例如将每条消息保存到单独的文件中(如示例所示),此方法非常有用。它通过在每次迭代中加载整个消息内容来简化流程,使您无需进行后续查找即可执行所需的操作。

但是,重要的是要考虑到在每次迭代期间加载整个消息内容可能会对性能产生影响,尤其是在处理大型 mbox 文件或大量消息时。在两种方法之间进行选择时,加载完整消息内容所需的额外处理时间可能是需要考虑的权衡。

方法迭代消息并检索整个消息内容的过程。

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
foreach (var eml in mbox.EnumerateMessages())
{
eml.Save($@"{eml.Subject}.eml");
}
}

这样,我们可以对每条消息执行各种操作,例如将它们保存到单独的 .eml 文件中,如示例所示。

最终,这些方法之间的选择取决于您的具体用例和要求。如果您需要快速访问基本消息信息并对特定消息进行进一步操作,第一种方法性能更好。另一方面,如果您需要立即访问完整的消息内容并希望一次对所有消息执行操作,则第二种方法提供了便利,但性能稍低。

在决定哪种方法更适合您的场景时,评估您的具体需求并考虑 mbox 文件大小、消息数量以及您打算执行的操作等因素非常重要。

阅读消息

在上一节中,我们讨论了如何列出消息。现在,让我们探讨如何使用字符串标识符读取各个消息,该字符串标识符可以从枚举 MessageInfo 的第一种方法派生。

使用方法列出消息时,每条消息都与单个 mbox 文件中的唯一标识符关联。此标识符通常表示为字符串,可以从对象的属性获取。

一旦我们获得了消息标识符,我们就可以通过以下步骤使用它来查看完整的消息内容:

  • 的实例来指定加载提取的消息所需的选项。
  • 我们允许保留嵌入式消息格式和 TNEF 附件。
  • 在 foreach 循环内,我们访问每个属性,该属性表示相应消息的唯一标识符。
  • 然后,我们使用此标识符以及方法来检索完整的消息作为对象。
  • 最后,我们可以对消息执行任何所需的操作,例如将其保存到单独的 .eml 文件中。

下面的代码片段演示了如何使用字符串标识符读取单个消息:

var emlLoadOptions = new EmlLoadOptions
{
PreserveEmbeddedMessageFormat = true,
PreserveTnefAttachments = true
};

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
foreach (var messageInfo in mbox.EnumerateMessageInfo())
{
var eml = mbox.ExtractMessage(messageInfo.EntryId, emlLoadOptions);
eml.Save($@"{eml.Subject}.eml");
}
}

通过利用从枚举 MessageInfo 的第一种方法获得的消息标识符,我们可以根据我们的特定要求高效地读取各个消息。

值得注意的是,这种方法允许您有选择地阅读和处理感兴趣的消息,同时跳过其他消息。在处理包含大量消息的大型 mbox 文件时,这种灵活性特别有价值,因为它可以最大限度地减少不必要的处理并提高整体效率。

请记住,消息标识符在单个 mbox 文件中是唯一的。如果您需要跨多个 mbox 文件处理消息,则需要维护标识符及其相应文件之间的映射。

由于能够使用唯一的字符串标识符读取各个消息,您在处理 mbox 文件时拥有更大的控制力和灵活性,并且可以有效地提取和操作所需的电子邮件内容。

实用功能

 Aspose.Email 库提供了多种实用功能,在处理 mbox 文件时非常方便。这里有几个例子:

获取 mbox 中存储的总项目数

方法轻松查看 mbox 文件中存储的项目总数。这对于跟踪电子邮件集合的大小非常有用。使用以下代码片段来实现此目的。

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
var itemsCount = mbox.GetTotalItemsCount();
}

获取一次迭代读取的数据大小

通过在迭代期间访问属性,我们可以获得一次迭代中读取的数据的大小。这对于性能优化或进度跟踪来说可能是有价值的信息。要实现此目的,请使用以下代码片段:

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
foreach (var messageInfo in mbox.EnumerateMessageInfo())
{
var messageSize = mbox.CurrentDataSize;
}
}

在本文中,我们探讨了 mbox 格式,并介绍了Aspose.Email for .NET库作为在 C# 项目中处理 mbox 文件的强大工具。我们介绍了如何打开 mbox 文件、解析和查看消息,并展示了一些实用功能。有了这些知识和提供的代码片段,您现在就可以在编程工作中轻松处理 mbox 文件了。您可以使用文档探索 Aspose.Email 的其他功能


欢迎下载|体验更多Aspose文档管理产品 

获取更多信息请咨询 或 加入Aspose技术交流群(761297826


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP