Quản lý tệp OLM của Outlook cho Mac

OLM (Outlook for Mac Archive) là một định dạng tệp liên quan tới Microsoft Outlook cho Mac. Nó được dùng để lưu trữ và lưu giữ các tin nhắn email, danh bạ, mục lịch, nhiệm vụ và các dữ liệu Outlook khác trên máy tính Mac. Các tệp OLM hoạt động như một bản sao lưu hoặc định dạng lưu trữ, cho phép người dùng lưu dữ liệu Outlook cho Mac để tham khảo hoặc di chuyển trong tương lai. Cần lưu ý rằng tệp OLM chỉ dành cho Outlook cho Mac và không tương thích với định dạng PST (Personal Storage Table) được Outlook trên Windows sử dụng. Nếu bạn cần chuyển dữ liệu Outlook giữa các nền tảng khác nhau, công cụ chuyển đổi sẽ rất hữu ích. Aspose.Email cung cấp các công cụ như vậy bao gồm mở, đọc và các chức năng khác để làm việc với tệp OLM.

Mở tệp OLM Outlook

Các tệp định dạng OLM có thể được mở theo hai cách:

  • sử dụng hàm khởi tạo
  • sử dụng phương thức tĩnh ‘from_file’

Mở tệp OLM Outlook bằng các Constructor của Python

Để mở tệp, gọi hàm khởi tạo của OlmStorage lớp và truyền tên tệp đầy đủ hoặc stream làm đối số cho nó:

import aspose.email as ae

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

Mở tệp OLM bằng phương thức tĩnh FromFile của Python

Để mở tệp, sử dụng phương thức tĩnh ‘from_file’ của OlmStorage lớp và truyền tên tệp đầy đủ hoặc stream làm đối số cho nó:

import aspose.email as ae

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

Quản lý thư mục và email trong tệp OLM

Truy cập cấu trúc thư mục một cách đệ quy

API Aspose.Email cho phép bạn hình dung và hiển thị cấu trúc thư mục được lấy từ tệp OLM bằng hàm print_all_folders. Hàm này nhận thuộc tính folder_hierarchy của OlmStorage lớp, cùng với mức thụt lề làm đầu vào, và đệ quy duyệt cấu trúc để in tên mỗi thư mục với thụt lề phù hợp.

Dưới đây là đoạn mã mẫu minh họa cách sử dụng hàm print_all_folders để hiển thị cấu trúc thư mục từ tệp 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, "")

Mã mẫu trên nhằm hiển thị cấu trúc thư mục của tệp OLM thông qua hàm đệ quy theo định dạng có cấu trúc và dễ đọc hơn.

Truy cập cấu trúc thư mục trực tiếp

Aspose.Email cũng cho phép truy cập trực tiếp cấu trúc thư mục từ tệp OLM bằng phương thức get_folders() của OlmStorage lớp.

Dưới đây là một đoạn mã mẫu để truy cập trực tiếp cấu trúc thư mục:

import aspose.email as ae

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

Lấy thư mục theo tên

Có thể lấy bất kỳ thư mục nào theo tên bằng phương thức get_folder(name, ignore_case) của OlmStorage lớp. Phương thức này yêu cầu tên thư mục và tham số độ nhạy chữ hoa/thường.

Dưới đây là một đoạn mã mẫu minh họa cách lấy thư mục theo tên:

import aspose.email as ae

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

Danh sách email từ tệp Outlook OLM

Thư viện Aspose.Email có thể được sử dụng để đọc và trích xuất tin nhắn email từ tệp Outlook for Mac (OLM). Bạn có thể lấy danh sách email bằng các phương thức sau của OlmFolder lớp đại diện cho một thư mục:

  • enumerate_messages() - Lặp qua mỗi tin nhắn email trong thư mục. Phương thức này trả về các tin nhắn dưới dạng các thể hiện của OlmMessageInfo lớp cung cấp thông tin cơ bản về mỗi tin nhắn email, chẳng hạn như tiêu đề, người gửi, ngày, v.v.
  • enumerate_mapi_messages() - Cũng lặp qua mỗi tin nhắn email trong thư mục, nhưng trong trường hợp này, trả về các tin nhắn dưới dạng các thể hiện của MapiMessage lớp đại diện cho một tin nhắn email một cách chi tiết hơn và cụ thể cho MAPI. Nó cung cấp truy cập vào nhiều thuộc tính và chi tiết của tin nhắn email, cho phép xử lý nâng cao và chuyên sâu hơn.

Các mẫu mã dưới đây minh họa cách trích xuất tiêu đề email cơ bản và lưu các tin nhắn email chi tiết từ tệp Outlook OLM bằng cách sử dụng enumerate_messages() để trích xuất tiêu đề và enumerate_mapi_messages() để lưu tin nhắn dưới dạng tệp .msg.

Trích xuất thông tin email cơ bản bằng phương thức ’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)

Lưu tin nhắn email chi tiết bằng phương thức ’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")

Lấy tổng số tin nhắn trong thư mục OLM

Cái OlmFolder lớp cung cấp cho bạn nhiều tùy chọn hơn với các phương thức sau:

  • has_messages - Lấy giá trị cho biết thư mục hiện tại có tin nhắn hay không.
  • message_count - Lấy số lượng tin nhắn.

Mã mẫu dưới đây minh họa cách sử dụng các phương thức này:

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

Lấy hoặc Đặt Ngày sửa đổi cho tin nhắn Outlook OLM

Aspose.Email cho phép lấy thông tin về thời gian sửa đổi cuối cùng của một email. Thuộc tính modified_date của OlmMessageInfo lớp đại diện cho ngày và giờ khi tin nhắn được sửa đổi lần cuối.

Dưới đây là một ví dụ minh họa cách sử dụng thuộc tính:

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

Trích xuất nội dung OLM

Trích xuất email từ tệp Outlook OLM

Bạn có thể lấy dữ liệu tin nhắn MAPI thực tế từ bộ lưu trữ email bằng phương thức extract_mapi_message(message_info) của OlmStorage lớp. Phương thức này trích xuất tin nhắn MAPI từ bộ lưu trữ dựa trên message_info được cung cấp.

Mẫu mã dưới đây minh họa cách sử dụng phương thức này:

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)

Trích xuất tin nhắn Outlook từ tệp OLM bằng định danh

Để truy cập dữ liệu tin nhắn MAPI, bạn có thể sử dụng thuộc tính entry_id để lấy định danh duy nhất (Entry ID) của một tin nhắn bằng cách sử dụng OlmMessageInfo lớp. Sau đó, bạn có thể sử dụng phương thức extract_mapi_message(id) của OlmStorage lớp, truyền entry ID làm tham số để lấy tin nhắn MAPI liên quan tới Entry ID cụ thể đó. Đoạn mã sau đây minh họa cách sử dụng các tính năng này:


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)

Quản lý cấu trúc thư mục OLM

Lấy đường dẫn thư mục trong tệp Outlook OLM

Aspose.Email cho phép bạn lấy đường dẫn phân cấp hoặc vị trí của thư mục trong tệp Outlook OLM. API cung cấp thuộc tính path của OlmFolder lớp trả về đường dẫn thư mục. Đoạn mã sau đây minh họa cách sử dụng thuộc tính này:

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)

Đếm mục trong thư mục Outlook OLM

Aspose.Email cung cấp khả năng đếm tổng số tin nhắn email trong một thư mục cụ thể của tệp Outlook OLM. Thuộc tính message_count của OlmFolder lớp trả về tổng số mục (tin nhắn email) được lưu trong một thư mục cụ thể trong tệp OLM. Đoạn mã sau đây minh họa cách sử dụng thuộc tính này:

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)

Lấy tổng số mục trong tệp Outlook OLM

Phương thức get_total_items_count() của OlmStorage lớp trả về tổng số mục tin nhắn chứa trong bộ lưu trữ OLM như trong đoạn mã mẫu dưới đây:

import aspose.email as ae

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

Quản lý danh mục Outlook

Lấy màu danh mục Outlook

Với Aspose.Email, bạn có thể dễ dàng lấy và sử dụng màu danh mục liên kết với các danh mục mục Outlook lưu trong tệp OLM. Các OlmItemCategory lớp cho phép bạn truy cập tên danh mục và màu tương ứng của chúng được biểu diễn dưới dạng thập lục phân. Các OlmStorage lớp có phương thức GetCategories() để lấy danh sách các danh mục từ bộ lưu trữ OLM. Bằng cách thực hiện đoạn mã dưới đây, bạn có thể dễ dàng lấy tất cả các danh mục đã sử dụng từ tệp lưu trữ OML và truy cập tên danh mục cùng màu của nó.

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

Ngoài ra, bạn có thể lấy màu danh mục liên kết với các tin nhắn cụ thể bằng cách duyệt qua các tin nhắn trong một thư mục và truy cập màu danh mục tương ứng dựa trên tên danh mục.

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