Конвертация MBOX в PST

Конвертация MBOX в PST. Базовая конверсия

При миграции почтовых данных из клиентов, таких как Mozilla Thunderbird, в Microsoft Outlook часто требуется конвертация архивов MBOX в формат PST (Personal Storage Table). Формат PST является родным для Outlook и Exchange и поддерживает продвинутые возможности, такие как структура папок и обработка сообщений на основе MAPI.

Aspose.Email для .NET позволяет разработчикам вручную переносить сообщения из файлов MBOX в хранилище, совместимое с Outlook, с полным контролем над процессом конвертации. Ниже приведён пример, демонстрирующий, как загрузить сообщения из архива MBOX и сохранить их в структурированный файл данных Outlook:

  1. Инициализируйте MBOX‑чтение с помощью MboxStorageReader.CreateReader().
  2. Создайте файл PST с помощью PersonalStorage.Create().
  3. Добавьте почтовую папку (например, “Inbox”) в хранилище.
  4. Пройдите по каждому сообщению, конвертируйте его в MapiMessage, и вставьте её в папку.
// Load the source file
var mbox = MboxStorageReader.CreateReader(mboxFilePath, new MboxLoadOptions());

// Create the destination Outlook data file
using (var personalStorage = PersonalStorage.Create(pstFilePath, FileFormatVersion.Unicode))
{
    // Add a folder to hold imported messages
    var folderInfo = personalStorage.CreatePredefinedFolder("Inbox", StandardIpmFolder.Inbox);

    // Process each message from the source file
    foreach (var eml in mbox.EnumerateMessages())
    {
        var msg = MapiMessage.FromMailMessage(eml);
        folderInfo.AddMessage(msg);
    }
}

Удалить цифровые подписи при конвертации

В некоторых случаях цифровые подписи, встроенные в сообщения, не нужны в целевом файле. Чтобы исключить их при передаче, установите RemoveSignature свойство в MboxToPstConversionOptions на true.

Следующий пример кода демонстрирует, как использовать это свойство:

var pstDataStream = new MemoryStream();
var personalStorage = PersonalStorage.Create(pstDataStream, FileFormatVersion.Unicode);
MailStorageConverter.MboxToPst(new MboxrdStorageReader(new FileStream(fileName, FileMode.Open, FileAccess.Read), new MboxLoadOptions()),
personalStorage,
    "Inbox",
new MboxToPstConversionOptions() { RemoveSignature = true });