
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
- Schritte zum Konvertieren von OLM in PST
- OLM programmatisch in PST konvertieren mit C#
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.