Hantera Outlook för Mac OLM‑filer

OLM (Outlook for Mac Archive) är ett filformat som är kopplat till Microsoft Outlook för Mac. Det används för att arkivera och lagra e‑postmeddelanden, kontakter, kalenderobjekt, uppgifter och annan Outlook‑data på Mac‑datorer. OLM‑filer fungerar som ett backup‑ eller arkivformat, vilket låter användare spara sin Outlook‑för‑Mac‑data för framtida referens eller migrering. Det är viktigt att notera att OLM‑filer är specifika för Outlook för Mac och är inte kompatibla med PST‑formatet (Personal Storage Table) som används av Outlook på Windows. Om du behöver överföra Outlook‑data mellan olika plattformar är konverteringsverktyg praktiska. Aspose.Email erbjuder sådana verktyg inklusive öppning, läsning och andra funktioner för att arbeta med OLM‑filer.

Öppna Outlook OLM-filer

OLM‑formatfiler kan öppnas på två sätt:

  • använder konstruktorn
  • med den statiska metoden ‘from_file’

Öppna Outlook OLM-filer med Pythons konstruktorer

För att öppna en fil, anropa konstruktorn för OlmStorage klass och skicka hela filnamnet eller stream som argument till den:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)

Öppna OLM-filer med Pythons statiska metod FromFile

För att öppna en fil, använd den statiska metoden ‘from_file’ på OlmStorage klass och skicka hela filnamnet eller stream som argument till den:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)

Mapp‑ och e‑posthantering i OLM‑filer

Komma åt mappstruktur rekursivt

Aspose.Email‑API låter dig visualisera och visa mapphierarkin som hämtats från en OLM‑fil med funktionen print_all_folders. Denna funktion tar folder_hierarchy-egenskapen på OlmStorage klass, tillsammans med ett indenteringsnivå som indata, och traverserar rekursivt hierarkin för att skriva ut varje mappnamn med korrekt indentering.

Nedan är kodexemplet som demonstrerar hur man använder funktionen print_all_folders för att visa mapphierarkin från en OLM‑fil:

import aspose.email as ae


def print_all_folders(folder_hierarchy, indent):
    for folder in folder_hierarchy:
        print(f"{indent}{folder.name}")
        print_all_folders(folder.sub_folders, indent + "-")

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
print_all_folders(olm.folder_hierarchy, "")

Kodexemplet ovan är avsett att visa mapphierarkin för OLM‑filen via en rekursiv funktion i ett mer strukturerat och läsbart format.

Komma åt mappstruktur direkt

Aspose.Email gör det också möjligt att direkt komma åt mappstrukturen i OLM‑filen med get_folders()‑metoden på OlmStorage klass.

Nedan är ett kodexempel för att direkt få åtkomst till mappstrukturen:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folders = olm.get_folders()

Hämta mappar efter namn

Det är möjligt att hämta en valfri mapp efter namn med get_folder(name, ignore_case)‑metoden på OlmStorage klass. Denna metod kräver mappnamn och parametrar för skiftlägeskänslighet.

Här är ett exempel på kod som illustrerar hur man hämtar en mapp efter namn:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

Lista e‑post från Outlook OLM‑filer

Aspose.Email‑biblioteket kan användas för att läsa och extrahera e‑postmeddelanden från Outlook for Mac (OLM)‑filer. Du kan hämta listan med e‑postmeddelanden med följande metoder på OlmFolder klass som representerar en mapp:

  • enumerate_messages() – Itererar genom varje e‑postmeddelande i mappen. Denna metod returnerar meddelanden som instanser av OlmMessageInfo klass som tillhandahåller grundläggande information om varje e‑postmeddelande, såsom ämne, avsändare, datum etc.
  • enumerate_mapi_messages() – Itererar också genom varje e‑postmeddelande i en mapp, men i detta fall returnerar meddelanden som instanser av MapiMessage klass som representerar ett e‑postmeddelande på ett mer detaljerat och MAPI‑specifikt sätt. Den ger åtkomst till ett brett spektrum av egenskaper och detaljer för e‑postmeddelandet, vilket möjliggör mer avancerad och specialiserad bearbetning.

Kodexemplen nedan visar hur man extraherar grundläggande e‑postämnen och sparar detaljerade e‑postmeddelanden från en Outlook OLM‑fil genom att använda enumerate_messages() för att extrahera ämnen och enumerate_mapi_messages() för att spara meddelanden som .msg‑filer.

Extrahera grundläggande e‑postinformation med ’enumerate_messages()’-metoden

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    print(message_info.subject)

Spara detaljerade e‑postmeddelanden med ’enumerate_mapi_messages()’-metoden

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for msg in folder.enumerate_mapi_messages():
    msg.save(f"{msg.subject}.msg")

Hämta totalt antal meddelanden i OLM‑mappen

Den OlmFolder klass ger dig ännu fler alternativ med följande metoder:

  • has_messages – Hämtar ett värde som visar om den aktuella mappen har meddelanden.
  • message_count – Hämtar antalet meddelanden.

Kodexemplet nedan visar hur man använder dessa metoder:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

if folder.has_messages:
   print(f"Message count: {folder.message_count}")

Hämta eller sätt modifierade datum för Outlook OLM‑meddelanden

Aspose.Email gör det möjligt att hämta information om den senaste ändringstiden för ett e‑postmeddelande. modified_date-egenskapen på OlmMessageInfo klass representerar datum och tid när meddelandet senast ändrades.

Här är ett exempel som demonstrerar användningen av egenskapen:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    modifiedDate = message_info.modified_date

Extrahera OLM‑innehåll

Extrahera e‑post från Outlook OLM‑filer

Du kan hämta den faktiska MAPI‑meddelandedatan från en e‑postlagring med extract_mapi_message(message_info)‑metoden på OlmStorage klass. Denna metod extraherar MAPI‑meddelandet från lagringen baserat på den angivna message_info.

Kodexemplet nedanför demonstrerar hur man använder denna metod:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    msg = olm.extract_mapi_message(message_info)

Extrahera Outlook‑meddelanden från OLM‑filer med identifierare

För att komma åt MAPI‑meddelandedata kan du använda entry_id-egenskapen för att erhålla det unika identifieraren (Entry ID) för ett meddelande med OlmMessageInfo klass. Därefter kan du använda extract_mapi_message(id)‑metoden på OlmStorage klass, där Entry ID skickas som parameter för att hämta MAPI‑meddelandet som är kopplat till just det Entry ID‑t. Följande kodexempel visar hur dessa funktioner används:


import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    msg = olm.extract_mapi_message(message_info.entry_id)

Hantera OLM‑mappstruktur

Hämta mappsökvägar i Outlook OLM‑filer

Aspose.Email låter dig hämta den hierarkiska sökvägen eller platsen för mappen i en Outlook OLM‑fil. API:n tillhandahåller path-egenskapen på OlmFolder klass som returnerar mappens sökväg. Följande kodexempel visar hur egenskapen används:

import aspose.email as ae


def print_path(storage, folders):
    for folder in folders:
        # print the current folder path
        print(folder.path)

        if folder.sub_folders:
            print_path(storage, folder.sub_folders)


fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
print_path(olm, olm.folder_hierarchy)

Räkna objekt i Outlook OLM‑mappar

Aspose.Email erbjuder möjligheten att räkna det totala antalet e‑postmeddelanden som finns i den specifika mappen i en Outlook OLM‑fil. message_count-egenskapen på OlmFolder klass returnerar det totala antalet objekt (e‑postmeddelanden) som lagras i en specifik mapp i OLM‑filen. Följande kodexempel visar hur egenskapen används:

import aspose.email as ae


def print_message_count(folders):
    for folder in folders:
        print(f"Message Count [{folder.name}]: {folder.message_count}")


fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
print_message_count(olm.folder_hierarchy)

Hämta totalt antal objekt i Outlook OLM‑filer

get_total_items_count()‑metoden på OlmStorage klass returnerar det totala antalet meddelandeobjekt som finns i OLM‑lagringen, som visas i kodexemplet nedan:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
count = olm.get_total_items_count()

Hantera Outlook‑kategorier

Hämta Outlook‑kategorifärger

Med Aspose.Email kan du enkelt hämta och använda kategorifärger som är knutna till Outlook‑objektkategorier lagrade i OLM‑filer. OlmItemCategory klass låter dig komma åt kategorinamn och deras respektive färger representerade i hexadecimalt format. OlmStorage klass har GetCategories()‑metoden för att hämta en lista över kategorier från OLM‑lagring. Genom att implementera kodexemplet nedan kan du enkelt hämta alla använda kategorier från en OML‑lagringsfil och få åtkomst till kategorinamnet samt dess färg.

with OlmStorage.FromFile("storage.olm") as olm:
    categories = olm.GetCategories()
    
    for category in categories:
        print(f"Category name: {category.Name}")
        
        # Color is represented as a hexadecimal value: #rrggbb
        print(f"Category color: {category.Color}")

Dessutom kan du hämta kategorifärgen som är associerad med specifika meddelanden genom att iterera igenom meddelandena i en mapp och komma åt motsvarande färg baserat på kategorinamnet.

for msg in olm.EnumerateMessages(folder):
    if msg.Categories is not None:
        for msgCategory in msg.Categories:
            print(f"Category name: {msgCategory}")
            categoryColor = next((c.Color for c in categories if c.Name.lower() == msgCategory.lower()), None)
            if categoryColor is not None:
                print(f"Category color: {categoryColor}")