Konvertera OLM till PST
Contents
[
Hide
]
OLM är ett databasfilformat som används av Microsoft Outlook för Mac. OLM‑filer lagrar e‑postmeddelanden, kalenderdata, kontakter och programinställningar, och de stöds inte av Outlook för Windows. För att migrera en brevlåda från Outlook för Mac till Outlook för Windows måste du konvertera OLM‑filen till Outlook‑ PST format. Aspose.Email för .NET låter dig göra detta i kod, utan att Microsoft Outlook är installerat.
Hur konverteringen fungerar
För att konvertera en OLM‑fil till PST, följ dessa steg:
- Skapa en instans av OlmStorage klass för att öppna käll‑OLM‑filen.
- Skapa en ny PST-fil med PersonalStorage.Create metod.
- Implementera en
GetContainerClassmetod som mappar en meddelandeklass till motsvarande mapp‑(container)‑klass, så varje mapp skapas med korrekt typ i PST. - Implementera en
AddToPstmetod som rekursivt läser varje mapp och dess meddelanden från OLM‑filen – med hjälp av EnumerateMapiMessages - och lägger till dem i PST i samma ordning, med hjälp avAddSubFolderochAddMessagemetoder för FolderInfo.
Kodexempel
Följande kod visar hur man konverterar en OLM‑fil till PST.
Main metod:
// 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‑metod:
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‑metod:
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);
}
}
Omvänd konvertering (PST till OLM) stöds inte, eftersom en OLM‑fil alltid skapas av Outlook för Mac när ett konto läggs till och synkroniseras med mailservern.