Umwandlung von OLM nach PST
Contents
[
Hide
]
OLM ist ein Datenbankdateiformat, das von Microsoft Outlook für Mac verwendet wird. OLM‑Dateien speichern E‑Mails, Kalenderdaten, Kontakte und Anwendungseinstellungen und werden von Outlook für Windows nicht unterstützt. Um ein Postfach von Outlook für Mac nach Outlook für Windows zu migrieren, müssen Sie die OLM‑Datei in das Outlook PST Format. Aspose.Email für .NET ermöglicht dies im Code, ohne dass Microsoft Outlook installiert sein muss.
Wie die Konvertierung funktioniert
Um eine OLM‑Datei in PST zu konvertieren, gehen Sie wie folgt vor:
- Erstellen Sie eine Instanz von dem OlmStorage Klasse zum Öffnen der Quell-OLM-Datei.
- Erstellen Sie eine neue PST-Datei mit dem PersonalStorage.Create Methode.
- Implementieren Sie ein
GetContainerClassMethode, die eine Nachrichtenklasse der entsprechenden Ordner‑(Container‑)Klasse zuordnet, sodass jeder Ordner im PST mit dem korrekten Typ erzeugt wird. - Implementieren Sie ein
AddToPstMethode verwendet wird, die rekursiv jeden Ordner und seine Nachrichten aus der OLM‑Datei liest – mit EnumerateMapiMessages - und fügt sie in derselben Reihenfolge zum PST hinzu, wobei dieAddSubFolderundAddMessageMethoden von FolderInfo.
Code‑Beispiel
Der folgende Code zeigt, wie man eine OLM‑Datei in PST konvertiert.
Main-Methode:
// create an instance of OlmStorage class to open the source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively read each folder and its messages
// and add them to the PST in the same order
foreach (var olmFolder in olm.FolderHierarchy)
{
AddToPst(pst.RootFolder, olmFolder);
}
}
GetContainerClass‑Methode:
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‑Methode repräsentiert:
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);
}
}
Die Umwandlung in die entgegengesetzte Richtung (PST zu OLM) wird nicht unterstützt, da eine OLM‑Datei immer von Outlook für Mac erstellt wird, wenn ein Konto hinzugefügt und mit dem Mail‑Server synchronisiert wird.