Tính năng và Chức năng

Tính năng và Chức năng

Trang này bao phủ mọi tính năng chính của aspose-email-foss 26.3 với các ví dụ Python hoạt động.


Đọc tệp MSG

Tải tệp MSG và truy cập các thuộc tính cốt lõi của nó:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.from_file("message.msg")

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html}")
print(f"Message Class: {msg.message_class}")

Tạo tệp MSG

Tạo một tin nhắn mới từ đầu:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")

Đặt tiêu đề và nội dung cho một tin nhắn hiện có:

msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")

Người nhận

Thêm người nhận với tên hiển thị và loại:

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Hello", "Message body")
msg.add_recipient("alice@example.com", display_name="Alice Smith")
msg.add_recipient("bob@example.com", display_name="Bob Jones", recipient_type=RECIPIENT_TYPE_CC)
msg.save("with_recipients.msg")

Tệp đính kèm

Thêm tệp đính kèm dạng nhị phân:

with open("report.pdf", "rb") as f:
    data = f.read()

msg.add_attachment("report.pdf", data, mime_type="application/pdf")
msg.save("with_attachment.msg")

Nhúng một tin nhắn MSG như một tệp đính kèm lồng nhau:

inner = MapiMessage.create("Inner Subject", "Inner body")
msg.add_embedded_message_attachment(inner, filename="embedded.msg", mime_type="application/vnd.ms-outlook")
msg.save("with_embedded.msg")

Thuộc tính MAPI

Đọc và ghi các thuộc tính MAPI theo ID thuộc tính:

from aspose.email_foss.msg import PropertyId

# Read a property
subject = msg.get_property(PropertyId.SUBJECT)

# Set a property
msg.set_property(PropertyId.SUBJECT, "New Subject")

Lặp qua tất cả các thuộc tính:

for prop in msg.iter_properties():
    print(f"Tag: {prop.property_tag:#010x}")

Chuyển đổi Email

Chuyển đổi giữa các định dạng MSG (MAPI) và email (RFC 5322):

# MSG to email string
email_str = msg.to_email_string()
print(email_str[:500])

# MSG to EmailMessage object
email_msg = msg.to_email_message()

# EmailMessage back to MapiMessage
msg2 = MapiMessage.from_email_message(email_msg)
msg2.save("roundtrip.msg")

Các thao tác CFB cấp thấp

Đọc cấu trúc container CFB trực tiếp:

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"File size: {reader.file_size} bytes")
print(f"Sectors: {reader.fat_sector_count}")
print(f"Entries: {reader.directory_entry_count}")

for entry in reader.iter_storages():
    print(f"Storage: {entry}")

for entry in reader.iter_streams():
    print(f"Stream: {entry}")

reader.close()

Ghi tài liệu CFB:

from aspose.email_foss.msg import MsgWriter

data = msg.to_bytes()
with open("output.msg", "wb") as f:
    f.write(data)

Mẹo và Thực hành Tốt nhất

  • Luôn gọi msg.close() hoặc sử dụng một context manager khi đã đọc xong để giải phóng các handle tệp
  • Sử dụng msg.validation_issues để kiểm tra các vấn đề tuân thủ định dạng MSG
  • Cái strict tham số trong MapiMessage.from_file() kiểm soát độ chịu lỗi — đặt thành False để phân tích cú pháp linh hoạt
  • Tất cả dữ liệu đính kèm được tải vào bộ nhớ trong quá trình from_file() — sử dụng att.data để truy cập byte trực tiếp; iter_attachments_info() là một iterator tiện lợi trên danh sách đính kèm đã được điền sẵn
  • Sử dụng to_email_string() để xem trước văn bản nhanh mà không cần xây dựng đối tượng email đầy đủ

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
CFBError khi tảiKhông phải là tệp CFB/MSG hợp lệXác minh tệp là một Outlook MSG thực sự
Thân tin rỗng sau khi tảiThân tin chỉ được lưu dưới dạng HTMLKiểm tra msg.body_html thay vì msg.body
Thiếu người nhậnMSG không có kho lưu trữ người nhậnNgười nhận là tùy chọn trong định dạng MSG; kiểm tra iter_attachments_info()

FAQ

Các phiên bản định dạng MSG nào được hỗ trợ?

Thư viện đọc và ghi các tệp MSG ở định dạng CFB v3 và v4, tương thích với Microsoft Outlook.

Tôi có thể đọc các tệp EML không?

Không trực tiếp. Thư viện xử lý định dạng MSG. Sử dụng MapiMessage.from_email_message() để chuyển đổi từ RFC 5322 EmailMessage đối tượng.

Có hỗ trợ an toàn đa luồng không?

Mỗi MapiMessageCFBReader phiên bản là độc lập. Truy cập đồng thời vào các phiên bản riêng biệt từ các luồng riêng là an toàn.


Tóm tắt Tham chiếu API

Lớp / Phương thứcMô tả
MapiMessageBiểu diễn tin nhắn MSG cấp cao
MapiMessage.from_file()Tải tệp MSG
MapiMessage.create()Tạo một tin nhắn MSG mới
MapiMessage.save()Lưu thành tệp MSG
MapiMessage.to_email_message()Chuyển đổi sang EmailMessage (RFC 5322)
MapiMessage.from_email_message()Chuyển đổi từ EmailMessage sang MSG
MapiMessage.add_recipient()Thêm người nhận
MapiMessage.add_attachment()Thêm tệp đính kèm nhị phân
MapiAttachmentTệp đính kèm trên một tin nhắn
MapiRecipientNgười nhận trên một tin nhắn
MapiPropertyMục thuộc tính MAPI
CFBReaderTrình đọc container CFB cấp thấp
CFBWriterTrình ghi container CFB cấp thấp
MsgReaderTrình đọc cấu trúc MSG cấp thấp
 Tiếng Việt