Керування файлами Outlook для Mac OLM
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}")