OLM zu PST

Microsoft Outlook ist für Windows- und Mac-Betriebssysteme verfügbar. Outlook für Mac und Outlook für Windows speichern Benutzer-E-Mails in Datendateien. Diese Datendateien bestehen aus allen E-Mails, Kontakten, Aufgaben, Notizen und Kalenderelementen. Outlook für Mac speichert Postfachelemente in OLM-Dateien, die von Outlook für Windows nicht unterstützt werden. Daher ist es nicht möglich, eine Outlook für Mac (OLM)-Datei in Outlook für Windows zu öffnen. Wenn Sie Ihr Postfach von Outlook für Mac nach Outlook für Windows migrieren möchten, müssen Sie die Outlook für Mac OLM-Datei in das Outlook PST-Dateiformat konvertieren. Dieser Artikel behandelt wie man OLM-Dateien programmatisch in C# in PST-Dateien konvertiert.

Die folgenden Themen werden in diesem Artikel behandelt:

C# API zum Konvertieren von OLM in PST

Um OLM in PST zu konvertieren, verwenden wir Aspose.Email für .NET. Es handelt sich um eine E-Mail-Verarbeitungs-API, die es Ihnen ermöglicht, E-Mails zu manipulieren und mit Dateiformaten beliebter E-Mail-Clients wie Thunderbird, Outlook usw. zu arbeiten. Sie können die DLL der API herunterladen oder sie über NuGet mit dem folgenden Befehl installieren.

PM> Install-Package Aspose.Email

Schritte zum Konvertieren von OLM in PST

Wir können eine OLM-Datei in PST konvertieren, indem wir die folgenden Schritte ausführen:

  • Erstellen Sie eine neue PST-Datei und öffnen Sie sie zum Schreiben
  • Öffnen Sie eine Quell-OLM-Datei
  • Lesen Sie jedes Postfachelement aus OLM und schreiben Sie es in PST

Der folgende Abschnitt beschreibt, wie man diese Schritte in C# umsetzt und Dateien von OLM nach PST konvertiert.

OLM programmatisch in PST konvertieren mit C#

Wir können OLM programmatisch in PST in C# konvertieren, indem wir die folgenden Schritte ausführen:

  • Zuerst erstellen Sie eine Instanz der OlmStorage-Klasse, um die Quell-OLM zu öffnen.
  • Als nächstes erstellen Sie eine neue PST-Datei mit der Create-Methode.
  • Darüber hinaus erstellen wir eine Funktion GetContainerClass, die die Nachrichtenklasse einer Ordnerklasse zuordnet, sodass wir PST-Ordner mit der Containerklasse erstellen können, die der Nachrichtenklasse entspricht, die sie enthalten.
  • Schließlich erstellen wir eine Funktion AddToPst, die rekursiv jeden Ordner und seine Nachrichten aus OLM mit der EnumerateMapiMessages-Methode liest und sie in derselben Reihenfolge mit den AddSubFolder- und AddMessage-Methoden zu PST hinzufügt.

Das folgende Codebeispiel zeigt, wie man eine OLM in eine PST in C# konvertiert.

Hauptmethode:

// create an instance of OlmStorage class to open source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively reads each folder and its messages
// and adds them to the PST in the same order
foreach (var olmFolder in olm.FolderHierarchy)
{
AddToPst(pst.RootFolder, olmFolder);
}
}

GetContainerClass-Funktion:

public string GetContainerClass(string messageClass)
{
if (messageClass.StartsWith("IPM.Contact") || messageClass.StartsWith("IPM.DistList"))
{
return "IPF.Contact";
}
if (messageClass.StartsWith("IPM.StickyNote"))
{
return "IPF.StickyNote";
}
if (messageClass.StartsWith("IPM.Activity"))
{
return "IPF.Journal";
}
if (messageClass.StartsWith("IPM.Task"))
{
return "IPF.Task";
}
if (messageClass.StartsWith("IPM.Appointment") || messageClass.StartsWith("IPM.Schedule.meeting"))
{
return "IPF.Appointment";
}
return "IPF.Note";
}

AddToPst-Funktion:

public void AddToPst(FolderInfo pstFolder, OlmFolder olmFolder)
{
FolderInfo pstSubFolder = pstFolder.GetSubFolder(olmFolder.Name);
foreach (var msg in olmFolder.EnumerateMapiMessages())
{
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name, GetContainerClass(msg.MessageClass));
}
pstSubFolder.AddMessage(msg);
}
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name);
}
foreach (var olmSubFolder in olmFolder.SubFolders)
{
AddToPst(pstSubFolder, olmSubFolder);
}
}

Kostenlose API-Lizenz erhalten

Sie können Aspose.Email für .NET ohne Evaluierungseinschränkungen mit einer kostenlosen temporären Lizenz verwenden.

Fazit

In diesem Artikel haben Sie gelernt, wie man OLM in PST in C# .NET konvertiert. Außerdem haben Sie gesehen, wie Sie Nachrichten aus OLM-Speicher lesen und Elemente programmatisch in PST-Speicher schreiben. Darüber hinaus können Sie die Dokumentation besuchen, um weitere Funktionen von Aspose.Email für .NET zu erkunden. Falls Sie Fragen haben, können Sie in unserem Forum posten.

Siehe auch