Att migrera e‑postdata från Outlook for Mac (OLM) till allmänt stödjade format som MBOX (för Thunderbird / Unix‑postlådor) och PST (Outlook för Windows) är en vanlig uppgift när man byter mellan plattformar. Microsoft Outlook for Mac använder OLM (Outlook for Mac Data File)-formatet för att lagra e‑post, kontakter, kalendrar och andra objekt. Men att migrera dessa data till Windows‑baserade miljöer eller andra e‑postklienter kräver ofta att OLM‑filer konverteras till universellt stödjade format som MBOX (används av klienter såsom Thunderbird och Apple Mail) eller PST (Outlook Personal Storage Table för Windows).

I den här artikeln visar vi hur du konverterar OLM-filer till PST- och MBOX-format i C# med hjälp av Aspose.Email for .NET, ett kraftfullt API som förenklar komplexa e‑postmigrationsuppgifter programmässigt. Du kommer att lära dig hur du öppnar OLM-filer, extraherar meddelanden, bevarar mapphierarkier och skapar bärbara e‑postarkiv för flera plattformar.

Användning av Aspose.Email för .NET för konvertering

[Aspose.Email for .NET][] erbjuder omfattande funktioner för att arbeta med olika e‑postformat, inklusive OLM, MBOX och PST. Det förenklar komplexa konverteringsuppgifter med sitt intuitiva API och omfattande dokumentation. Nedan går vi igenom stegen för att konvertera OLM till MBOX och PST med C#.

För att komma igång, installera Aspose.Email NuGet-paketet i ditt .NET‑projekt:

Install-Package Aspose.Email

Det här paketet innehåller alla nödvändiga klasser för att hantera OLM‑, MBOX‑ och PST‑filer.

Konvertera OLM till MBOX

MBOX-formatet lagrar e‑postmeddelanden som sammanfogade MIME‑poster, och används ofta av öppna källkods‑e‑postklienter. Nedan följer ett enkelt, men effektivt kodexempel som konverterar alla meddelanden från en OLM‑mapp till en MBOX‑fil. Det använder följande API‑medlemmar:

Steg

  1. Definiera filsökvägarna för inmatnings‑OLM‑filen och utdata‑MBOX‑filen.
  2. Öppna OLM‑filen med OlmStorage.FromFile.
  3. Skapa en MBOX‑skrivare med MboxrdStorageWriter med den angivna utdatavägen och alternativen.
  4. Hämta mappen “Inbox” från OLM‑filen med en skiftlägesokänslig sökning.
  5. Loopa igenom alla MAPI‑meddelanden i mappen “Inbox”.
  6. Konvertera varje MAPI‑meddelande till ett standard‑MailMessage‑objekt.
  7. Skriv varje konverterat meddelande till MBOX‑filen.

Kodexempel

var olmPath = @"C:\data\archive.olm";
var mboxPath = @"C:\data\output.mbox";

// Load OLM file using OlmStorage
using (var olm = OlmStorage.FromFile(olmPath))
using (var mboxWriter = new MboxrdStorageWriter(mboxPath, new MboxSaveOptions()))
{
    // Get the folder (case-insensitive example)
    var inbox = olm.GetFolder("Inbox", true);

// Iterate MAPI messages (returns MapiMessage objects)
    foreach (MapiMessage mapi in inbox.EnumerateMapiMessages())
    {
        // Convert to MailMessage and write to MBOX
        var mail = mapi.ToMailMessage(new MailConversionOptions());
        mboxWriter.WriteMessage(mail);
    }
}

Obs: Om du vill ha en MBOX per mapp, skapa en separat skrivare för varje OLM-mapp. Om du föredrar ett enda arkiv, återanvänd en MboxrdStorageWriter-instans och anropa WriteMessage upprepade gånger som visas i kodexemplet ovan.

Konvertera OLM till PST

Att konvertera OLM till PST kräver ofta inte bara kopiering av meddelanden utan även återuppbyggnad av mapphierarkin. Kodexemplet nedan visar hur man konverterar och kopierar mappstrukturen och meddelandena från en Outlook OLM‑arkivfil till en Unicode PST‑fil med hjälp av Aspose.Email for .NET.

Viktiga medlemmar

Steg

  1. Ange filvägarna för käll‑OLM‑filen och destinations‑PST‑filen.
  2. Öppna OLM‑arkivet för läsning och skapa en ny PST‑fil för skrivning.
  3. Hämta top‑nivå mapparna från OLM‑arkivet.
  4. Definiera en hjälpfunktion för att hitta eller skapa en motsvarande mapp i PST för ett givet mappnamn.
  5. Definiera en rekursiv funktion för att:
    • Skapa eller hämta motsvarande PST‑mapp för varje OLM‑mapp.
    • Kopiera alla meddelanden från OLM‑mappen till PST‑mappen.
    • Anropa sig själv för varje undermapp i OLM‑mappen för att bevara mappträdet.
  6. Anropa den rekursiva funktionen på alla top‑nivå OLM‑mappar, med PST‑rotmappen som förälder.
  7. Spara hela mapphierarkin och meddelandena i den nya PST‑filen, bevarande MAPI‑data.

Kodexempel

var olmPath = @"C:\data\archive.olm";
var pstPath = @"C:\data\output.pst";

// Create a new PST file
using (var olm = OlmStorage.FromFile(olmPath))
using (var pst = PersonalStorage.Create(pstPath, FileFormatVersion.Unicode))
{
    // Get top-level folders in OLM
    var rootFolders = olm.GetFolders();

// Helper: map OlmFolder -> FolderInfo in PST by recursively creating subfolders
    FolderInfo GetOrCreatePstFolder(FolderInfo parentPstFolder, string folderName)
    {
        // Try to find existing subfolder (case-insensitive)
        foreach (var sub in parentPstFolder.GetSubFolders())
        {
            if (string.Equals(sub.DisplayName, folderName, StringComparison.OrdinalIgnoreCase))
                return sub;
        }

// Create new subfolder
        return parentPstFolder.AddSubFolder(folderName);
    }

// Recursive traversal
    void ProcessOlmFolder(OlmFolder olmFolder, FolderInfo pstParent)
    {
        // Create / get the corresponding PST folder
        var pstFolder = GetOrCreatePstFolder(pstParent, olmFolder.Name);

// Copy messages: OlmFolder.EnumerateMapiMessages returns MapiMessage instances
        foreach (var mapi in olmFolder.EnumerateMapiMessages())
        {
            // AddMessage preserves MAPI data into PST
            pstFolder.AddMessage(mapi);
        }

// Recurse into OLM subfolders (OlmFolder.SubFolders property)
        foreach (var child in olmFolder.SubFolders)
        {
            ProcessOlmFolder(child, pstFolder);
        }
    }

// Note: PST.RootFolder exists; create top-level folders under it.
    foreach (var top in rootFolders)
    {
        // Skip creating a duplicate for default PST root folder names if needed
        ProcessOlmFolder(top, pst.RootFolder);
    }
}

Viktigt: en ny skapad PST innehåller redan en Deleted Items-mapp som standard — så var försiktig så att du inte duplicerar standardmappar.

Obs:

Slutsats

I den här artikeln har vi lärt oss hur man konverterar Outlook for Mac (OLM)-filer till PST- och MBOX-format i C# med hjälp av Aspose.Email for .NET. Vi undersökte hur man öppnar och bearbetar OLM-arkiv, extraherar meddelanden och bevarar mapphierarkier medan data exporteras till nya e‑postlagringsformat. Med Aspose.Email API kan utvecklare enkelt automatisera plattformsoberoende e‑postmigrationer och säkerställa kompatibilitet mellan Outlook for Mac, Outlook for Windows och öppen källkod‑klienter som Thunderbird.

För mer information, utforska Aspose.Email-dokumentation och API-referens.

Ytterligare resurser

Se även