OLM till PST

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

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.

Se även