Zarządzanie plikami Outlook for Mac OLM
OLM (Outlook for Mac Archive) jest formatem pliku powiązanym z Microsoft Outlook dla systemu Mac. Służy do archiwizacji i przechowywania wiadomości e‑mail, kontaktów, elementów kalendarza, zadań oraz innych danych Outlooka na komputerach Mac. Pliki OLM pełnią funkcję kopii zapasowej lub archiwalnej, umożliwiając użytkownikom zapisanie danych Outlook dla Mac na przyszłość lub migrację. Należy pamiętać, że pliki OLM są specyficzne dla Outlooka dla Mac i nie są kompatybilne z formatem PST (Personal Storage Table) używanym przez Outlook na systemie Windows. Jeśli potrzebujesz przenieść dane Outlooka między różnymi platformami, przydatne będą narzędzia konwersji. Aspose.Email oferuje takie narzędzia, w tym otwieranie, odczyt i inne funkcje pracy z plikami OLM.
Otwieranie plików Outlook OLM
Pliki w formacie OLM można otworzyć na dwa sposoby:
- używając konstruktora
- przy użyciu statycznej metody ‘from_file’
Otwórz pliki Outlook OLM przy użyciu konstruktorów w Pythonie
Aby otworzyć plik, wywołaj konstruktor klasy OlmStorage klasy i przekaż pełną nazwę pliku lub strumień jako argument:
import aspose.email as ae
fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
Otwórz pliki OLM przy użyciu statycznej metody FromFile w Pythonie
Aby otworzyć plik, użyj statycznej metody ‘from_file’ klasy OlmStorage klasy i przekaż pełną nazwę pliku lub strumień jako argument:
import aspose.email as ae
fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
Zarządzanie folderami i e‑mailami w plikach OLM
Dostęp do struktury folderów rekurencyjnie
API Aspose.Email pozwala wizualizować i wyświetlać hierarchię folderów pobraną z pliku OLM przy użyciu funkcji print_all_folders. Funkcja ta przyjmuje właściwość folder_hierarchy klasy OlmStorage klasy, wraz z poziomem wcięcia jako wejściem, i rekurencyjnie przeszukuje hierarchię, aby wypisać nazwę każdego folderu z odpowiednim wcięciem.
Poniżej znajduje się przykład kodu demonstrujący użycie funkcji print_all_folders do wyświetlenia hierarchii folderów z pliku 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, "")
Powyższy przykład kodu ma na celu wyświetlenie hierarchii folderów pliku OLM przy użyciu funkcji rekurencyjnej w bardziej uporządkowany i czytelny sposób.
Bezpośredni dostęp do struktury folderów
Aspose.Email umożliwia także bezpośredni dostęp do struktury folderów z pliku OLM przy użyciu metody get_folders() klasy OlmStorage klasa.
Poniżej znajduje się przykład kodu do bezpośredniego dostępu do struktury folderów:
import aspose.email as ae
fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folders = olm.get_folders()
Pobieranie folderów po nazwie
Możliwe jest pobranie dowolnego folderu po nazwie przy użyciu metody get_folder(name, ignore_case) klasy OlmStorage klasa. Metoda wymaga parametrów nazwy folderu oraz flagi rozróżniania wielkości liter.
Oto przykładowy kod ilustrujący, jak pobrać folder po jego nazwie:
import aspose.email as ae
fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)
Lista e‑maili z plików Outlook OLM
Biblioteka Aspose.Email może być używana do odczytu i wyodrębniania wiadomości e‑mail z plików Outlook for Mac (OLM). Listę e‑maili możesz otrzymać przy pomocy następujących metod klasy OlmFolder klasa, która reprezentuje folder:
- enumerate_messages() – iteruje po każdej wiadomości e‑mail w folderze. Metoda zwraca wiadomości jako instancje klasy OlmMessageInfo klasa, która dostarcza podstawowe informacje o każdej wiadomości e‑mail, takie jak temat, nadawca, data itp.
- enumerate_mapi_messages() – iteruje również po każdej wiadomości e‑mail w folderze, ale w tym przypadku zwraca wiadomości jako instancje klasy MapiMessage klasa, która reprezentuje wiadomość e‑mail w bardziej szczegółowy i specyficzny dla MAPI sposób. Zapewnia dostęp do szerokiego zakresu właściwości i szczegółów wiadomości, umożliwiając bardziej zaawansowane i specjalistyczne przetwarzanie.
Poniższe przykłady kodu pokazują, jak wyodrębnić podstawowe tematy e‑maili i zapisać szczegółowe wiadomości e‑mail z pliku Outlook OLM, używając enumerate_messages() do wyodrębniania tematów oraz enumerate_mapi_messages() do zapisywania wiadomości jako pliki .msg.
Wyodrębnij podstawowe informacje o e‑mailach przy użyciu 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)
Zapisz szczegółowe wiadomości e‑mail przy użyciu 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")
Pobierz łączną liczbę wiadomości w folderze OLM
Ten OlmFolder klasa daje jeszcze więcej możliwości dzięki następującym metodom:
- has_messages – zwraca wartość wskazującą, czy bieżący folder zawiera wiadomości.
- message_count – zwraca liczbę wiadomości.
Poniższy przykład kodu demonstruje, jak używać tych metod:
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}")
Uzyskaj lub ustaw daty modyfikacji wiadomości Outlook OLM
Aspose.Email umożliwia pobranie informacji o czasie ostatniej modyfikacji wiadomości e‑mail. Właściwość modified_date klasy OlmMessageInfo klasa reprezentuje datę i godzinę ostatniej modyfikacji wiadomości.
Oto przykład pokazujący użycie tej własności:
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
Wyodrębnianie zawartości OLM
Wyodrębnianie e‑maili z plików Outlook OLM
Możesz pobrać rzeczywiste dane wiadomości MAPI z magazynu e‑mail używając metody extract_mapi_message(message_info) klasy OlmStorage klasa. Ta metoda wyodrębnia wiadomość MAPI z magazynu na podstawie podanego message_info.
Poniższy przykład kodu demonstruje, jak używać tej metody:
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)
Wyodrębnianie wiadomości Outlook z plików OLM po identyfikatorze
Aby uzyskać dostęp do danych wiadomości MAPI, możesz użyć własności entry_id, aby uzyskać unikalny identyfikator (Entry ID) wiadomości przy pomocy OlmMessageInfo klasa. Następnie możesz wykorzystać metodę extract_mapi_message(id) klasy OlmStorage klasa, przyjmująca Entry ID jako parametr w celu pobrania wiadomości MAPI powiązanej z tym konkretnym Entry ID. Poniższy fragment kodu demonstruje użycie tych funkcji:
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)
Zarządzanie strukturą folderów OLM
Pobieranie ścieżek folderów w plikach Outlook OLM
Aspose.Email umożliwia uzyskanie hierarchicznej ścieżki lub lokalizacji folderu w pliku Outlook OLM. API udostępnia właściwość path klasy OlmFolder klasa, która zwraca ścieżkę folderu. Poniższy fragment kodu demonstruje użycie tej własności:
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)
Zliczanie elementów w folderach Outlook OLM
Aspose.Email udostępnia możliwość zliczenia całkowitej liczby wiadomości e‑mail znajdujących się w określonym folderze pliku Outlook OLM. Właściwość message_count klasy OlmFolder klasa zwraca łączną liczbę elementów (wiadomości e‑mail) przechowywanych w konkretnym folderze pliku OLM. Poniższy fragment kodu demonstruje użycie tej własności:
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)
Pobierz łączną liczbę elementów w plikach Outlook OLM
Metoda get_total_items_count() klasy OlmStorage klasa zwraca łączną liczbę elementów wiadomości przechowywanych w OLM, jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
count = olm.get_total_items_count()
Zarządzanie kategoriami Outlook
Pobieranie kolorów kategorii Outlook
Dzięki Aspose.Email możesz łatwo pobrać i wykorzystać kolory kategorii powiązane z kategoriami elementów Outlook przechowywanymi w plikach OLM. OlmItemCategory klasa umożliwia dostęp do nazw kategorii i ich odpowiednich kolorów w formacie szesnastkowym. OlmStorage klasa posiada metodę GetCategories() służącą do pobierania listy kategorii z magazynu OLM. Implementując poniższy przykład kodu, możesz łatwo pobrać wszystkie użyte kategorie z pliku OML oraz uzyskać nazwę kategorii wraz z jej kolorem.
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}")
Dodatkowo możesz pobrać kolor kategorii powiązany z konkretnymi wiadomościami, iterując po wiadomościach w folderze i uzyskując odpowiedni kolor kategorii na podstawie nazwy kategorii.
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}")