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
stricttham số trongMapiMessage.from_file()kiểm soát độ chịu lỗi — đặt thànhFalseđể 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ụngatt.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ân | Khắc phục |
|---|---|---|
CFBError khi tải | Khô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ải | Thân tin chỉ được lưu dưới dạng HTML | Kiểm tra msg.body_html thay vì msg.body |
| Thiếu người nhận | MSG không có kho lưu trữ người nhận | Ngườ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 MapiMessage và CFBReader 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ức | Mô tả |
|---|---|
MapiMessage | Biể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 |
MapiAttachment | Tệp đính kèm trên một tin nhắn |
MapiRecipient | Người nhận trên một tin nhắn |
MapiProperty | Mục thuộc tính MAPI |
CFBReader | Trình đọc container CFB cấp thấp |
CFBWriter | Trình ghi container CFB cấp thấp |
MsgReader | Trình đọc cấu trúc MSG cấp thấp |