在 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 需要合併到目標 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,該庫還提供了多種免費資源:

這些資源對於最大化您專案中庫的潛力是無價的。

另見