拆分 MBOX 文件

拆分 MBOX 存储/取消拆分操作

Aspose.Email 提供将大型邮箱文件划分为可管理块的方法。这有助于提升性能和内存效率,尤其是在处理大量邮件归档时。可用的拆分选项取决于您使用的 .NET 版本。

按 .NET 版本支持的 API

针对 .NET Framework 4.5 和 .NET Core

您可以使用 SplitInto 方法的 MboxStorageReader 类,可选择包含取消令牌或自定义输出文件命名:

参数:

  • chunkSize:每个块的大致字节大小。
  • outputPath:将创建块的文件夹路径。
  • partFileNamePrefix:要添加到每个部分文件名的前缀。
  • token:一个 CancellationToken,允许对操作进行可能的取消。

针对 .NET 版本低于 4.5

早期版本支持相同的 SplitInto 方法,但不带取消令牌:

带取消的受控拆分代码示例

以下代码示例演示了如何将归档拆分为最多 5 部分,并在之后自动取消操作:

.NET 4.5 / .NET Core

int partCount = 0;

var tokenSource = new CancellationTokenSource();

var mbox = new MboxrdStorageReader(fileName, new MboxLoadOptions { LeaveOpen = false });

// Subscribe to events
mbox.MboxFileCreated += (sender, e) =>
{
    partCount++;
    if (partCount >= 5)
        tokenSource.Cancel();
};

System.Threading.Tasks.Task task = mbox.SplitInto(10000000, outputPath, tokenSource.Token);
task.Wait();

低于 .NET 4.5

int partCount = 0;
var mbox = new MboxrdStorageReader(fileName, new MboxLoadOptions { LeaveOpen = false });
mbox.SplitInto(10000000, outputPath);

mbox.MboxFileCreated += (sender, e) =>
{
    partCount++;
    if (partCount >= 5)
        mbox.Cancel();
};

异步拆分大型 MBOX 文件

处理大型电子邮件归档可能效率低下且占用大量内存。为提升性能和可管理性,Aspose.Email for .NET 提供了异步 SplitIntoAsync 方法,允许您将大文件拆分为更小的块 —— 不会阻塞主线程。下面的代码示例展示了如何使用 MboxStorageReader.CreateReaderAsync 异步打开大型 MBOX 文件,然后调用 SplitIntoAsync 将其划分为更小的文件,每个文件最大为 10 MB。生成的块使用前缀 "chunk_" 保存到指定的输出目录中。

using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
    await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}