Керування файлами Outlook для Mac OLM

Contents
[ ]

OLM (Outlook for Mac Archive) – це формат файлу, пов’язаний з Microsoft Outlook для Mac. Він використовується для архівування та збереження електронних листів, контактів, елементів календаря, завдань та інших даних Outlook на комп’ютерах Mac. Файли OLM служать як резервна копія або архівний формат, дозволяючи користувачам зберігати дані Outlook для Mac для майбутнього використання або міграції. Важно зазначити, що файли OLM є специфічними для Outlook для Mac і не сумісні з форматом PST (Personal Storage Table), який використовується Outlook у Windows. Якщо потрібно перенести дані Outlook між різними платформами, знадобляться інструменти конверсії. Aspose.Email пропонує такі інструменти, включаючи відкриття, читання та інші функції роботи з файлами OLM.

Відкриття Outlook OLM файлів

Файли формату OLM можна відкрити двома способами:

  • використовуючи конструктор
  • використовуючи статичний метод ‘from_file’

Відкривати Outlook OLM файли за допомогою конструкторів у Python

Щоб відкрити файл, викличте конструктор OlmStorage клас і передайте повну назву файлу або потік як аргумент:

import aspose.email as ae

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

Відкривати OLM файли за допомогою статичного методу FromFile в Python

Щоб відкрити файл, використайте статичний метод ‘from_file’ класу OlmStorage клас і передайте повну назву файлу або потік як аргумент:

import aspose.email as ae

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

Управління папками та електронною поштою у файлах OLM

Рекурсивний доступ до структури папок

API Aspose.Email дозволяє візуалізувати та відобразити ієрархію папок, отриману з OLM‑файлу, використовуючи функцію print_all_folders. Ця функція приймає властивість folder_hierarchy класу OlmStorage клас, разом з рівнем відступу як вхідним параметром, і рекурсивно проходить ієрархію, виводячи назву кожної папки з відповідним відступом.

Нижче наведений приклад коду, який демонструє, як використати функцію print_all_folders для відображення ієрархії папок з OLM‑файлу:

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

Наведений вище приклад коду призначений для відображення ієрархії папок OLM‑файлу за допомогою рекурсивної функції у більш структурованому та читабельному форматі.

Прямий доступ до структури папок

Aspose.Email також дає можливість безпосередньо отримати структуру папок з OLM‑файлу, використовуючи метод get_folders() класу OlmStorage клас.

Нижче наведений приклад коду для прямого доступу до структури папок:

import aspose.email as ae

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

Отримати папки за назвою

Можливо отримати будь-яку папку за її назвою, використовуючи метод get_folder(name, ignore_case) класу OlmStorage клас. Цей метод вимагає параметри назви папки та чутливості до регістру.

Ось приклад коду, який ілюструє, як отримати папку за її назвою:

import aspose.email as ae

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

Список листів з Outlook OLM‑файлів

Бібліотеку Aspose.Email можна використовувати для читання та витягнення електронних листів з файлів Outlook для Mac (OLM). Ви можете отримати список листів, використовуючи наступні методи класу OlmFolder клас, який представляє папку:

  • enumerate_messages() – перебирає кожне повідомлення електронної пошти у папці. Цей метод повертає повідомлення як екземпляри OlmMessageInfo клас, який надає базову інформацію про кожне повідомлення електронної пошти, таку як тема, відправник, дата тощо.
  • enumerate_mapi_messages() – також перебирає кожне повідомлення електронної пошти у папці, але в цьому випадку повертає повідомлення як екземпляри MapiMessage клас, який представляє електронний лист більш детально та специфічно для MAPI. Він надає доступ до широкого спектру властивостей та деталей електронного листа, що дозволяє виконувати більш просунуту та спеціалізовану обробку.

Нижче наведені приклади коду демонструють, як витягнути базові теми електронних листів та зберегти докладні електронні листи з Outlook OLM‑файлу, використовуючи enumerate_messages() для витягнення тем та enumerate_mapi_messages() для збереження повідомлень у файл .msg.

Витяг базової інформації про електронний лист за допомогою методу ’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)

Зберегти докладні електронні листи за допомогою методу ’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")

Отримати загальну кількість повідомлень у папці OLM

The OlmFolder клас надає вам ще більше варіантів за допомогою наступних методів:

  • has_messages – отримує значення, що вказує, чи має поточна папка повідомлення.
  • message_count – отримує кількість повідомлень.

Нижче наведений приклад коду демонструє, як використовувати ці методи:

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

Отримати або встановити дати модифікації повідомлень Outlook OLM

Aspose.Email дає можливість отримати інформацію про час останньої модифікації електронного листа. Властивість modified_date класу OlmMessageInfo клас представляє дату та час останньої модифікації повідомлення.

Ось приклад, який демонструє використання властивості:

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

Витяг вмісту OLM

Витяг електронних листів з Outlook OLM‑файлів

Ви можете отримати фактичні дані MAPI‑повідомлення зі сховища електронної пошти, використовуючи метод extract_mapi_message(message_info) класу OlmStorage клас. Цей метод витягує MAPI‑повідомлення зі сховища на основі наданого message_info.

Нижче наведений приклад коду демонструє, як використовувати цей метод:

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)

Витяг повідомлень Outlook з OLM‑файлів за ідентифікатором

Щоб отримати дані MAPI‑повідомлення, ви можете використати властивість entry_id для отримання унікального ідентифікатора (Entry ID) повідомлення за допомогою OlmMessageInfo клас. Потім ви можете використати метод extract_mapi_message(id) класу OlmStorage клас, передаючи Entry ID як параметр для отримання MAPI‑повідомлення, пов’язаного з цим конкретним Entry ID. Наведений фрагмент коду демонструє використання цих можливостей:


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)

Управління структурою папок OLM

Отримати шляхи папок у файлах Outlook OLM

Aspose.Email дозволяє отримати ієрархічний шлях або розташування папки всередині файлу Outlook OLM. API надає властивість path класу OlmFolder клас, який повертає шлях до папки. Наведений фрагмент коду демонструє використання цієї властивості:

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)

Підрахунок елементів у папках Outlook OLM

Aspose.Email надає можливість підрахувати загальну кількість електронних листів, що містяться у певній папці файлу Outlook OLM. Властивість message_count класу OlmFolder клас повертає загальну кількість елементів (електронних листів), збережених у певній папці OLM‑файлу. Наведений фрагмент коду демонструє використання цієї властивості:

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)

Отримати загальну кількість елементів у файлах Outlook OLM

Метод get_total_items_count() класу OlmStorage клас повертає загальну кількість елементів повідомлень, що містяться у сховищі OLM, як показано у наведеному нижче прикладі коду:

import aspose.email as ae

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

Керування категоріями Outlook

Отримати кольори категорій Outlook

За допомогою Aspose.Email ви можете легко отримати та використовувати кольори категорій, пов’язані з категоріями елементів Outlook, що зберігаються у OLM‑файлах. OlmItemCategory клас дозволяє отримати доступ до назв категорій та їхніх відповідних кольорів у шістнадцятковому форматі. OlmStorage клас містить метод GetCategories() для отримання списку категорій з сховища OLM. Реалізуючи наведений нижче приклад коду, ви легко отримуєте всі використані категорії з файлу сховища OML та можете доступитись до назви категорії разом із її кольором.

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

Крім того, ви можете отримати колір категорії, пов’язаний із конкретними повідомленнями, перебираючи повідомлення у папці та отримуючи відповідний колір категорії за назвою категорії.

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