在 C# 中拆分和合并 Outlook PST 文件

PST(个人存储表)文件由 Microsoft Outlook 用于存储电子邮件消息、日历事件、联系人和其他项目。随着时间的推移,电子邮件和其他数据的积累,它们可能变得非常大,这可能导致性能问题、管理困难和更高的损坏风险。为了应对这些挑战,将较大的数据拆分为更小、更易于管理的部分是一种常见做法。另一方面,当需要合并来自多个来源的数据时,合并就变得必要。

拆分有助于减小大小、提高性能,并根据特定标准组织内容,例如按日期、文件夹或其他属性。合并对于希望将多个存储合并为一个的用户尤其有用,通常用于归档目的或在迁移后合并邮箱时。

通过执行拆分和合并操作,用户可以增强其电子邮件存储的可用性和可维护性。本指南解释了如何使用 .NET 以编程方式实现这些任务,重点介绍控制文件大小、合并多个 PST 和处理在这些过程中发生的事件的关键功能。

处理 PST 文件的 C# API

为了处理 PST 文件,我们将使用 Aspose.Email for .NET,这是一款多功能的电子邮件管理库,提供电子邮件相关任务的高级功能。该 API 使开发人员能够处理电子邮件、日历、联系人等,使其成为需要强大电子邮件处理功能的应用程序的强大工具。Aspose.Email for .NET API 在管理大型 PST 文件方面表现出色,提供拆分和合并的能力。这些功能使其成为高效处理 PST 文件管理的自动化过程开发的理想解决方案,确保在 .NET 应用程序中顺畅的数据处理。

要利用该库的强大功能,只需使用 NuGet 包管理器安装它并将其集成到您的项目中:

  • 在 Visual Studio 中打开您的项目。
  • 导航到工具 > NuGet 包管理器 > 管理解决方案的 NuGet 包。
  • 搜索 Aspose.Email
  • 选择该包并单击安装。

或者,您可以使用包管理控制台并输入以下命令:

Install-Package Aspose.Email

您还可以直接从 Aspose 网站下载 API 的最新版本。

库安装完成后,开始编码吧!

合并 PST 文件

Aspose.Email 允许您合并多个 PST,从而将电子邮件数据合并到一个文件中,简化数据管理。这在处理分散在不同来源的备份或归档文件时尤其有用,或在合并来自多个帐户的数据时。该 API 提供了一个 MergeWith 方法,可以无缝合并 PST 文件。

以下步骤概述了如何以编程方式合并两个或更多 PST 文件:

  1. 首先,加载您希望合并数据的主要 PST。
  2. 指定需要合并到目标 PST 的源 PST 路径数组。
  3. 在目标 PST 上使用 MergeWith 方法,传入源路径数组。这将合并内容,保留文件夹结构和诸如电子邮件、联系人和日历条目等项目。
  4. 附加事件处理程序以监控合并过程。像 StorageProcessingStorageProcessed 这样的事件提供有关当前正在处理的 PST 和何时成功合并的更新。

代码示例:

// Load the target PST file
using (var targetPst = PersonalStorage.FromFile("target.pst"))
{
// List of source PST files to merge
var sourcePstFiles = new[] { "source1.pst", "source2.pst" };
// Attach event handlers for monitoring progress
targetPst.StorageProcessing += (o, args) =>
{ Console.WriteLine($"Processing file: {args.FileName}"); };
targetPst.StorageProcessed += (o, args) =>
{ Console.WriteLine($"Processed file: {args.FileName}"); };
// Merge the source PST files into the target PST
targetPst.MergeWith(sourcePstFiles);
}

将 PST 文件拆分为更小的部分

在管理大型 PST 时,将其拆分为更小的部分可以帮助提高性能,更有效地处理文件大小限制。该过程包括将大型 PST 拆分为指定大小的块。以下步骤概述了如何使用 Aspose.Email API 将 PST 文件拆分为更小的部分:

  1. 使用 PersonalStorage.FromFile 方法从指定的文件路径加载 PST 文件。
  2. 定义每个拆分部分的最大大小(以字节为单位)。
  3. 为每个拆分文件的名称设置前缀,并指定拆分文件将保存的目录。
  4. 附加事件处理程序以监控拆分过程。
  5. 使用 SplitInto 方法根据块大小拆分 PST。该方法将在目标目录中创建多个较小的 PST。

以下是一个示例代码,演示如何将 PST 文件拆分为更小的部分:

// Path to the large PST file
var pstFilePath = @"C:\PSTFiles\LargeFile.pst";
// Path where the split files will be saved
var destinationPath = @"C:\PSTFiles\SplitFiles";
// Specify the chunk size (in bytes)
var chunkSize = 209715200; // 200 MB
// Prefix for split file names
var filePrefix = "Part_";
// Load the PST file
using (var pst = PersonalStorage.FromFile(pstFilePath))
{
// Attach event handlers
pst.ItemMoved += (o, args) =>
{
Console.WriteLine($"Item moved: {args.EntryId}");
Console.WriteLine($"Destination folder: {args.DestinationFolder.DisplayName}");
};
pst.StorageProcessed += (o, args) =>
{
Console.WriteLine($"Processed chunk: {args.FileName}");
};
pst.StorageProcessing += (o, args) =>
{
Console.WriteLine($"Processing chunk: {args.FileName}");
};
// Split the PST into parts
pst.SplitInto(chunkSize, filePrefix, destinationPath);
Console.WriteLine("PST file has been split successfully.");
}
view raw SplitPstFile.cs hosted with ❤ by GitHub

按标准拆分

根据特定标准拆分 PST 文件可以更有效地管理和组织大量数据。这种方法允许您根据定义的规则或条件将 PST 文件分解为更小、更易于管理的部分。例如,您可能希望根据电子邮件的日期范围、发件人地址或消息重要性来拆分 PST。在本节中,我们将探讨如何使用标准拆分 PST。

要使用 Aspose.Email API 按标准拆分,您需要定义表示过滤标准的 MailQuery 对象。这些标准用于确定 PST 文件将如何被分割。 PersonalStorage 类的 SplitInto 方法允许您指定这些标准并生成相应的部分。

  1. 使用 PersonalStorage.FromFile 方法加载 PST 文件。
  2. 定义标准。创建 MailQuery 对象以指定拆分的标准。在此示例中,我们将定义两个查询:一个基于发送日期,另一个基于发件人的电子邮件地址。
  3. 拆分 PST: pst.SplitInto(queries, filePrefix, outputPath) 方法根据定义的标准将 PST 拆分为部分,并以指定的前缀将其保存在输出文件夹中。

以下是一个示例,演示如何根据标准拆分 PST 文件:

// Define the path to the PST file
var pstFilePath = @"path\to\your\input.pst";
var outputPath = @"path\to\output\folder";
var filePrefix = "Part";
// Load the PST file
using (var pst = PersonalStorage.FromFile(pstFilePath))
{
// Define criteria for splitting
var dateQuery = new MailQuery("'SentDate' >= '01-Jan-2023'");
var senderQuery = new MailQuery("'From' Contains 'example@example.com'");
// Create an array of MailQuery objects for different criteria
var queries = new[] { dateQuery, senderQuery };
// Split PST based on criteria
pst.SplitInto(queries, filePrefix, outputPath);
Console.WriteLine("PST file split by criteria completed.");
}

结论

在本文中,我们探讨了如何:

  • 将两个或多个 PST 文件合并为一个文件,从而更易于管理和整合电子邮件数据。
  • 根据大小或标准将大型 PST 文件拆分为更小的部分,这有助于有效组织和分发数据。

此外,我们还看到如何使用事件处理程序监控这些操作的进度,提供实时反馈和对过程的控制。

为了执行上述任务,我们使用了功能强大且先进的 Aspose.Email for .NET 库的 C# API,该库还提供了一些免费资源:

  • 一份全面的 文档
  • 一份广泛的 API 参考
  • 各种免费的在线工具和 应用 来增强开发过程,
  • 免费的 支持论坛 以获取社区帮助和见解,
  • 博客 以获取最新的提示和教程。

这些资源对最大化库在项目中的潜力至关重要。

另见