Správa souborů Outlook pro Mac OLM

OLM (Outlook for Mac Archive) je formát souboru spojený s Microsoft Outlook pro Mac. Používá se k archivaci a ukládání e‑mailových zpráv, kontaktů, položek kalendáře, úkolů a dalších dat Outlooku na počítačích Mac. Soubory OLM slouží jako záložní nebo archivní formát, který uživatelům umožňuje uložit svá data Outlook pro Mac pro budoucí reference nebo migraci. Je důležité poznamenat, že soubory OLM jsou specifické pro Outlook pro Mac a nejsou kompatibilní s formátem PST (Personal Storage Table) používaným v Outlooku pro Windows. Pokud potřebujete přenést data Outlooku mezi různými platformami, jsou užitečné nástroje pro konverzi. Aspose.Email nabízí takové nástroje včetně otevírání, čtení a dalších funkcí pro práci se soubory OLM.

Otevírání Outlook OLM souborů

Soubory ve formátu OLM lze otevřít dvěma způsoby:

  • použitím konstruktoru
  • použitím statické metody ‘from_file’

Otevřít Outlook OLM soubory pomocí konstruktorů v Pythonu

Pro otevření souboru zavolejte konstruktor třídy OlmStorage třídu a předat jako argument úplný název souboru nebo proud:

import aspose.email as ae

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

Otevřít OLM soubory pomocí statické metody FromFile v Pythonu

Pro otevření souboru použijte statickou metodu ‘from_file’ třídy OlmStorage třídu a předat jako argument úplný název souboru nebo proud:

import aspose.email as ae

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

Správa složek a e‑mailů v OLM souborech

Rekurzivní přístup ke struktuře složek

API Aspose.Email vám umožňuje vizualizovat a zobrazit hierarchii složek získanou z OLM souboru pomocí funkce print_all_folders. Tato funkce přijímá vlastnost folder_hierarchy třídy OlmStorage třída, spolu s úrovní odsazení jako vstupem, a rekurzivně prochází hierarchii, aby vytiskla název každé složky s odpovídajícím odsazením.

Níže je ukázkový kód demonstrující, jak použít funkci print_all_folders k zobrazení hierarchie složek z OLM souboru:

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, "")

Výše uvedený ukázkový kód má za cíl zobrazit hierarchii složek OLM souboru pomocí rekurzivní funkce ve strukturovanějším a čitelnějším formátu.

Přímý přístup ke struktuře složek

Aspose.Email také umožňuje přímý přístup ke struktuře složek z OLM souboru pomocí metody get_folders() třídy OlmStorage třída.

Níže je ukázkový kód pro přímý přístup ke struktuře složek:

import aspose.email as ae

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

Získání složek podle názvu

Je možné získat libovolnou složku podle názvu pomocí metody get_folder(name, ignore_case) třídy OlmStorage třída. Tato metoda vyžaduje parametry názvu složky a volby rozlišování velikosti písmen.

Zde je ukázkový kód ilustrující, jak získat složku podle jejího názvu:

import aspose.email as ae

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

Seznam e‑mailů ze souborů Outlook OLM

Knihovna Aspose.Email může být použita k načtení a extrakci e‑mailových zpráv ze souborů Outlook for Mac (OLM). Seznam e‑mailů můžete získat pomocí následujících metod třídy OlmFolder třída, která představuje složku:

  • enumerate_messages() – prochází každou e‑mailovou zprávu ve složce. Tato metoda vrací zprávy jako instance třídy OlmMessageInfo třída, která poskytuje základní informace o každé e‑mailové zprávě, jako předmět, odesílatel, datum atd.
  • enumerate_mapi_messages() – také prochází každou e‑mailovou zprávu ve složce, ale v tomto případě vrací zprávy jako instance třídy MapiMessage třída, která představuje e‑mailovou zprávu podrobněji a specificky pro MAPI. Poskytuje přístup k široké škále vlastností a detailů e‑mailové zprávy, což umožňuje pokročilejší a specializované zpracování.

Níže uvedené ukázky kódu demonstrují, jak extrahovat základní předměty e‑mailů a uložit podrobné e‑mailové zprávy z Outlook OLM souboru pomocí enumerate_messages() pro extrakci předmětů a enumerate_mapi_messages() pro ukládání zpráv jako .msg soubory.

Extrahování základních informací o e‑mailu pomocí metody ’enumerate_messages()’

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)

Uložení podrobných e‑mailových zpráv pomocí metody ’enumerate_mapi_messages()’

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")

Získání celkového počtu zpráv ve složce OLM

The OlmFolder třída nabízí ještě více možností s následujícími metodami:

  • has_messages – získá hodnotu indikující, zda aktuální složka obsahuje zprávy.
  • message_count – získá počet zpráv.

Níže uvedený ukázkový kód demonstruje, jak použít tyto metody:

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}")

Získání nebo nastavení datumů poslední úpravy pro zprávy Outlook OLM

Aspose.Email umožňuje získat informace o čase poslední úpravy e‑mailové zprávy. Vlastnost modified_date třídy OlmMessageInfo třída představuje datum a čas poslední úpravy zprávy.

Zde je příklad, který demonstruje použití vlastnosti:

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

Extrahování obsahu OLM

Extrahování e‑mailů ze souborů Outlook OLM

Můžete získat aktuální data MAPI zprávy z e‑mailového úložiště pomocí metody extract_mapi_message(message_info) třídy OlmStorage třída. Tato metoda extrahuje MAPI zprávu ze úložiště na základě poskytnutých message_info.

Níže uvedený ukázkový kód demonstruje, jak použít tuto metodu:

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)

Extrahování Outlook zpráv ze souborů OLM podle identifikátoru

Pro přístup k datům MAPI zprávy můžete použít vlastnost entry_id k získání unikátního identifikátoru (Entry ID) zprávy pomocí třídy OlmMessageInfo třída. Poté můžete využít metodu extract_mapi_message(id) třídy OlmStorage třída, která přijímá Entry ID jako parametr pro získání MAPI zprávy spojené s tímto konkrétním Entry ID. Následující ukázka kódu demonstruje použití těchto funkcí:


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)

Správa struktury složek OLM

Získání cest složek v souborech Outlook OLM

Aspose.Email umožňuje získat hierarchickou cestu nebo umístění složky v souboru Outlook OLM. API poskytuje vlastnost path třídy OlmFolder třída, která vrací cestu ke složce. Následující ukázka kódu demonstruje použití této vlastnosti:

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)

Počítání položek ve složkách Outlook OLM

Aspose.Email poskytuje možnost spočítat celkový počet e‑mailových zpráv obsažených v konkrétní složce souboru Outlook OLM. Vlastnost message_count třídy OlmFolder třída vrací celkový počet položek (e‑mailových zpráv) uložených v konkrétní složce OLM souboru. Následující ukázka kódu demonstruje použití této vlastnosti:

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)

Získání celkového počtu položek v souborech Outlook OLM

Metoda get_total_items_count() třídy OlmStorage třída vrací celkový počet položek zpráv obsažených v OLM úložišti, jak je ukázáno v následujícím ukázkovém kódu:

import aspose.email as ae

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

Správa kategorií Outlooku

Získání barev kategorií Outlooku

S Aspose.Email můžete snadno získat a využít barvy kategorií spojené s kategoriemi položek Outlook uložených v OLM souborech. OlmItemCategory třída vám umožňuje přístup k názvům kategorií a jejich odpovídajícím barvám v hexadecimálním formátu. OlmStorage třída obsahuje metodu GetCategories() pro získání seznamu kategorií z OLM úložiště. Implementací níže uvedeného ukázkového kódu můžete snadno získat všechny použité kategorie z OML souboru úložiště a přistupovat k názvu kategorie spolu s její barvou.

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}")

Navíc můžete získat barvu kategorie přiřazenou konkrétním zprávám tím, že projdete zprávy ve složce a získáte odpovídající barvu kategorie podle jejího názvu.

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}")