MBOX‑bestanden splitsen

MBOX-opslag splitsen/Het splitsen annuleren

Aspose.Email biedt methoden om grote mailboxbestanden in beheersbare delen te verdelen. Dit verbetert de prestaties en geheugenefficiëntie, vooral bij het werken met omvangrijke e‑mailarchieven. De beschikbare splitsingsopties variëren afhankelijk van de .NET‑versie die je gebruikt.

Ondersteunde API’s per .NET‑versie

Voor .NET Framework 4.5 en .NET Core

Je kunt MBOX‑data segmenteren met behulp van de SplitInto methode van de MboxStorageReader klasse, met de optie om een annulerings‑token op te nemen of de naamgeving van het uitvoerbestand aan te passen:

Parameters:

  • chunkSize: De geschatte grootte van elk segment in bytes.
  • outputPath: Het mappad waarin de segmenten worden aangemaakt.
  • partFileNamePrefix: Het voorvoegsel dat aan de bestandsnaam van elk deel moet worden toegevoegd.
  • token: Een CancellationToken die de mogelijke annulering van de bewerking mogelijk maakt.

Voor .NET‑versies onder 4.5

Eerdere versies ondersteunen hetzelfde SplitInto methode maar zonder annulerings‑tokens:

Code‑samples voor gecontroleerd splitsen met annulering

De volgende code‑samples demonstreren hoe een archief in maximaal 5 delen te splitsen, waarna de bewerking automatisch wordt geannuleerd:

.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();

Onder .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();
};

Grote MBOX‑bestanden asynchroon splitsen

Werken met grote e‑mailarchieven kan inefficiënt en geheugenzwaar zijn. Om de prestaties en beheerbaarheid te verbeteren, biedt Aspose.Email voor .NET de asynchrone SplitIntoAsync methode, waarmee je grote bestanden in kleinere delen kunt splitsen - zonder de hoofdthread te blokkeren. Het voorbeeldcode hieronder laat zien hoe je MboxStorageReader.CreateReaderAsync om een groot MBOX‑bestand asynchroon te openen en vervolgens aan te roepen SplitIntoAsync om het op te delen in kleinere bestanden, elk met een maximale grootte van 10 MB. De resulterende delen worden opgeslagen in de opgegeven uitvoermap met het voorvoegsel "chunk_".

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