Управление на OLM файлове за Outlook за Mac
OLM (Outlook for Mac Archive) е файлов формат, свързан с Microsoft Outlook за Mac. Той се използва за архивиране и съхранение на имейл съобщения, контакти, календарни елементи, задачи и други данни от Outlook на компютри с macOS. 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 файлове
Достъп до структурата на папките рекурсивно
Aspose.Email API позволява да визуализирате и покажете йерархията на папките, извлечена от 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 for 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 папка
Този 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 class, като предаде 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 class, който връща пътя на папката. Следният примерен код демонстрира използването на това свойство:
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 class връща общия брой елементи (имейл съобщения), съхранени в конкретна папка в 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 файлове. The OlmItemCategory class ви позволява да достъпвате имената на категориите и съответните им цветове, представени в шестнадесетичен формат. The 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}")