Microsoft Outlook är tillgängligt för Windows och Mac operativsystem. Outlook för Mac och Outlook för Windows, lagra användarnas e-postmeddelanden i datafiler. Dessa datafiler består av alla e-postmeddelanden, kontakter, uppgifter, anteckningar och kalenderobjekt. Outlook för Mac behåller postlådeobjekt i OLM-fil, som inte stöds av Outlook för Windows. Det är alltså inte möjligt att öppna en Outlook för Mac-fil (OLM) i Outlook för Windows. Om du vill migrera din postlåda från Outlook för Mac till Outlook för Windows måste du konvertera Outlook för Mac OLM-filen till Outlook PST-filformat. Den här artikeln beskriver hur man konverterar OLM-fil till PST-fil programmatiskt i C#.
Följande ämnen kommer att behandlas i den här artikeln:
- C# API för att konvertera OLM till PST
- Steg för att konvertera OLM till PST
- Konvertera OLM till PST programmatiskt med C#
C# API för att konvertera OLM till PST
För att konvertera OLM till PST kommer vi att använda Aspose.Email for .NET. Det är ett e-postbearbetnings-API som låter dig manipulera e-postmeddelanden och arbeta med filformat för populära e-postklienter som Thunderbird, Outlook, etc. Du kan ladda ner API:s DLL eller installera den från NuGet med hjälp av följande kommando.
PM> Install-Package Aspose.Email
Steg för att konvertera OLM till PST
Vi kan konvertera en OLM-fil till PST genom att följa stegen nedan:
- Skapa en ny PST-fil och öppna den för skrivning
- Öppna en käll-OLM-fil
- Läs varje postlådeförsändelse från OLM och skriv det till PST
Följande avsnitt beskriver hur du omvandlar dessa steg till C# och konverterar filer från OLM till PST.
Konvertera OLM till PST programmatiskt med C#
Vi kan konvertera OLM till PST programmatiskt i C# genom att följa stegen nedan:
- Skapa först en instans av klassen OlmStorage för OLM med öppen källkod.
- Skapa sedan en ny PST-fil med metoden Create.
- Dessutom kommer vi att skapa en
GetContainerClass
-funktion som mappar meddelandeklassen till en mappklass, så att vi kan skapa PST-mappar med containerklass som motsvarar meddelandeklassen de innehåller. - Slutligen, skapa en “AddToPst”-funktion som rekursivt läser varje mapp och dess meddelanden från OLM med hjälp av metoden EnumerateMapiMessages och lägger till dem i PST i samma ordning med AddSubFolder och AddMessage metoder.
Följande kodexempel visar hur man konverterar en OLM till en PST i C#.
Huvudmetod:
// skapa en instans av OlmStorage-klassen till OLM med öppen källkod
using (var olm = new OlmStorage("my.olm"))
// skapa en ny PST-fil
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// läser varje mapp och dess meddelanden rekursivt
// och lägger till dem i PST i samma ordning
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);
}
}
Skaffa en gratis API-licens
Du kan använda Aspose.Email för .NET utan utvärderingsbegränsningar med en gratis temporär licens.
Slutsats
I den här artikeln har du lärt dig hur du konverterar OLM till PST i C# .NET. Du har också sett hur du läser meddelanden från OLM-lagring och skriver objekt till PST-lagring programmatiskt. Bortsett från det kan du besöka dokumentationen för att utforska andra funktioner i Aspose.Email for .NET. Om du skulle ha några frågor kan du göra ett inlägg på vårt forum.