Die Migration von E-Mail-Daten aus Outlook for Mac (OLM) in weit verbreitete Formate wie MBOX (für Thunderbird / Unix-Postfächer) und PST (Outlook für Windows) ist eine gängige Aufgabe beim Wechsel zwischen Plattformen. Microsoft Outlook für Mac verwendet das OLM (Outlook for Mac Data File)-Format, um E‑Mails, Kontakte, Kalender und andere Elemente zu speichern. Allerdings erfordert die Migration dieser Daten in Windows‑basierte Umgebungen oder zu anderen E‑Mail‑Clients häufig die Konvertierung von OLM‑Dateien in universell unterstützte Formate wie MBOX (von Clients wie Thunderbird und Apple Mail verwendet) oder PST (Outlook Personal Storage Table für Windows).

In diesem Artikel zeigen wir Ihnen, wie Sie OLM‑Dateien in PST‑ und MBOX‑Formate in C# mit Aspose.Email for .NET konvertieren, einer leistungsstarken API, die komplexe E‑Mail‑Migrationsaufgaben programmgesteuert vereinfacht. Sie lernen, wie Sie OLM‑Dateien öffnen, Nachrichten extrahieren, Ordnerhierarchien beibehalten und portable E‑Mail‑Archive für mehrere Plattformen erstellen.

Verwendung von Aspose.Email for .NET für die Konvertierung

[Aspose.Email for .NET][] bietet umfassende Funktionen zur Arbeit mit verschiedenen E‑Mail‑Formaten, einschließlich OLM, MBOX und PST. Es vereinfacht komplexe Konvertierungsaufgaben mit seiner intuitiven API und umfangreichen Dokumentation. Im Folgenden führen wir die Schritte zur Konvertierung von OLM zu MBOX und PST mit C# durch.

Um loszulegen, installieren Sie das Aspose.Email NuGet‑Paket in Ihrem .NET‑Projekt:

Install-Package Aspose.Email

Dieses Paket enthält alle notwendigen Klassen zur Verarbeitung von OLM-, MBOX- und PST-Dateien.

OLM in MBOX konvertieren

Das MBOX‑Format speichert E‑Mail‑Nachrichten als zusammengefügte MIME‑Einträge und wird häufig von Open‑Source‑E‑Mail‑Clients verwendet. Im Folgenden finden Sie ein einfaches, aber effizientes Code‑Beispiel, das alle Nachrichten aus einem OLM‑Ordner in eine MBOX‑Datei konvertiert. Es nutzt die folgenden API‑Member:

Schritte

  1. Definieren Sie die Dateipfade für die Eingabe‑OLM‑Datei und die Ausgabe‑MBOX‑Datei.
  2. Öffnen Sie die OLM‑Datei mit OlmStorage.FromFile.
  3. Erstellen Sie einen MBOX‑Writer mit MboxrdStorageWriter unter Angabe des gewünschten Ausgabepfads und der Optionen.
  4. Greifen Sie auf den Ordner „Inbox“ in der OLM‑Datei zu, wobei die Suche nicht zwischen Groß‑ und Kleinschreibung unterscheidet.
  5. Durchlaufen Sie alle MAPI‑Nachrichten im Ordner „Inbox“.
  6. Konvertieren Sie jede MAPI‑Nachricht in ein Standard‑MailMessage‑Objekt.
  7. Schreiben Sie jede konvertierte Nachricht in die MBOX‑Datei.

Codebeispiel

var olmPath = @"C:\data\archive.olm";
var mboxPath = @"C:\data\output.mbox";

// Load OLM file using OlmStorage
using (var olm = OlmStorage.FromFile(olmPath))
using (var mboxWriter = new MboxrdStorageWriter(mboxPath, new MboxSaveOptions()))
{
    // Get the folder (case-insensitive example)
    var inbox = olm.GetFolder("Inbox", true);

    // Iterate MAPI messages (returns MapiMessage objects)
    foreach (MapiMessage mapi in inbox.EnumerateMapiMessages())
    {
        // Convert to MailMessage and write to MBOX
        var mail = mapi.ToMailMessage(new MailConversionOptions());
        mboxWriter.WriteMessage(mail);
    }
}

Hinweis:

Wenn Sie für jeden Ordner ein MBOX erstellen möchten, erstellen Sie für jeden OLM‑Ordner einen separaten Writer.
Wenn Sie ein einzelnes Archiv bevorzugen, verwenden Sie dieselbe MboxrdStorageWriter-Instanz erneut und rufen Sie WriteMessage wiederholt auf, wie im obigen Codebeispiel gezeigt.

OLM in PST konvertieren

Das Konvertieren von OLM nach PST erfordert häufig nicht nur das Kopieren von Nachrichten, sondern auch das Wiederherstellen der Ordnerhierarchie. Das untenstehende Codebeispiel zeigt, wie Sie die Ordnerstruktur und Nachrichten aus einer Outlook‑OLM‑Archivdatei in eine Unicode‑PST‑Datei konvertieren und kopieren können, wobei Aspose.Email for .NET verwendet wird.

Wichtige Mitglieder

Schritte

  1. Legen Sie die Dateipfade für die Quell‑OLM‑Datei und die Ziel‑PST‑Datei fest.
  2. Öffnen Sie das OLM‑Archiv zum Lesen und erstellen Sie eine neue PST‑Datei zum Schreiben.
  3. Rufen Sie die obersten Ordner aus dem OLM‑Archiv ab.
  4. Definieren Sie eine Hilfsfunktion, um einen passenden Ordner im PST zu finden oder zu erstellen.
  5. Definieren Sie eine rekursive Funktion, die:
    • den entsprechenden PST‑Ordner für jeden OLM‑Ordner erstellt oder abruft,
    • alle Nachrichten vom OLM‑Ordner in den PST‑Ordner kopiert und
    • sich selbst für jeden Unterordner im OLM‑Ordner aufruft, um die Ordnerstruktur beizubehalten.
  6. Rufen Sie die rekursive Funktion für alle obersten OLM‑Ordner auf und verwenden Sie den PST‑Stammordner als übergeordnetes Element.
  7. Speichern Sie die gesamte Ordnerhierarchie und die Nachrichten in der neuen PST‑Datei, wobei die MAPI‑Daten erhalten bleiben.

Codebeispiel

var olmPath = @"C:\data\archive.olm";
var pstPath = @"C:\data\output.pst";

// Create a new PST file
using (var olm = OlmStorage.FromFile(olmPath))
using (var pst = PersonalStorage.Create(pstPath, FileFormatVersion.Unicode))
{
    // Get top-level folders in OLM
    var rootFolders = olm.GetFolders();

    // Helper: map OlmFolder -> FolderInfo in PST by recursively creating subfolders
    FolderInfo GetOrCreatePstFolder(FolderInfo parentPstFolder, string folderName)
    {
        // Try to find existing subfolder (case-insensitive)
        foreach (var sub in parentPstFolder.GetSubFolders())
        {
            if (string.Equals(sub.DisplayName, folderName, StringComparison.OrdinalIgnoreCase))
                return sub;
        }

        // Create new subfolder
        return parentPstFolder.AddSubFolder(folderName);
    }

    // Recursive traversal
    void ProcessOlmFolder(OlmFolder olmFolder, FolderInfo pstParent)
    {
        // Create / get the corresponding PST folder
        var pstFolder = GetOrCreatePstFolder(pstParent, olmFolder.Name);

        // Copy messages: OlmFolder.EnumerateMapiMessages returns MapiMessage instances
        foreach (var mapi in olmFolder.EnumerateMapiMessages())
        {
            // AddMessage preserves MAPI data into PST
            pstFolder.AddMessage(mapi);
        }

        // Recurse into OLM subfolders (OlmFolder.SubFolders property)
        foreach (var child in olmFolder.SubFolders)
        {
            ProcessOlmFolder(child, pstFolder);
        }
    }

    // Note: PST.RootFolder exists; create top-level folders under it.
    foreach (var top in rootFolders)
    {
        // Skip creating a duplicate for default PST root folder names if needed
        ProcessOlmFolder(top, pst.RootFolder);
    }
}

Wichtig: Ein neu erstelltes PST enthält standardmäßig bereits einen Gelöschte Elemente‑Ordner — achten Sie darauf, die Standardordner nicht zu duplizieren.

Hinweis:

Fazit

In diesem Artikel haben wir gelernt, wie man Outlook for Mac (OLM)-Dateien in PST- und MBOX-Formate in C# mit Aspose.Email for .NET konvertiert. Wir haben untersucht, wie man OLM-Archive öffnet und verarbeitet, Nachrichten extrahiert und Ordnerhierarchien beibehält, während man Daten in neue Mail‑Speicherformate exportiert. Mit der Aspose.Email API können Entwickler die plattformübergreifende E‑Mail‑Migration einfach automatisieren und die Kompatibilität zwischen Outlook for Mac, Outlook for Windows und Open‑Source‑Clients wie Thunderbird sicherstellen.

Für weitere Details, erkunden Sie die Aspose.Email Dokumentation und die API‑Referenz.

Zusätzliche Ressourcen

Siehe auch