Konwersja OLM na PST
Contents
[
Hide
]
OLM jest formatem bazy danych używanym przez Microsoft Outlook dla Mac. Pliki OLM przechowują wiadomości e‑mail, dane kalendarza, kontakty i ustawienia aplikacji, i nie są obsługiwane przez Outlook dla Windows. Aby przenieść skrzynkę pocztową z Outlooka dla Mac do Outlooka dla Windows, trzeba skonwertować plik OLM na format Outlooka PST format. Aspose.Email dla .NET umożliwia to w kodzie, bez konieczności instalacji Microsoft Outlook.
Jak działa konwersja
Aby przekonwertować plik OLM na PST, wykonaj następujące kroki:
- Utwórz instancję OlmStorage klasa otwierająca źródłowy plik OLM.
- Utwórz nowy plik PST przy użyciu PersonalStorage.Create metoda.
- Zaimplementuj
GetContainerClassmetodę mapującą klasę wiadomości na odpowiadającą jej klasę folderu (kontenera), tak aby każdy folder został utworzony z właściwym typem w PST. - Zaimplementuj
AddToPstmetody, która rekurencyjnie odczytuje każdy folder i jego wiadomości z pliku OLM – przy użyciu EnumerateMapiMessages - i dodaje je do PST w tej samej kolejności, używającAddSubFolderiAddMessagemetod klasy FolderInfo.
Przykład kodu
Poniższy kod pokazuje, jak przekonwertować plik OLM na PST.
Metoda Main:
// 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);
}
}
Metodę GetContainerClass:
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";
}
Metodę AddToPst:
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);
}
}
Konwersja w odwrotnym kierunku (PST do OLM) nie jest obsługiwana, ponieważ plik OLM jest zawsze tworzony przez Outlook dla Mac po dodaniu konta i zsynchronizowaniu z serwerem poczty.