คุณลักษณะและฟังก์ชันการทำงาน
คุณลักษณะและฟังก์ชันการทำงาน
หน้านี้ครอบคลุมคุณลักษณะหลักทั้งหมดของ aspose-email-foss 26.3 พร้อมตัวอย่าง Python ที่ทำงานได้.
การอ่านไฟล์ MSG
โหลดไฟล์ MSG และเข้าถึงคุณสมบัติหลักของมัน:
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}")การสร้างไฟล์ MSG
สร้างข้อความใหม่ตั้งแต่ต้น:
from aspose.email_foss.msg import MapiMessage
msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")ตั้งหัวเรื่องและเนื้อความในข้อความที่มีอยู่:
msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")ผู้รับ
เพิ่มผู้รับพร้อมชื่อที่แสดงและประเภท:
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")ไฟล์แนบ
เพิ่มไฟล์แนบแบบไบนารี:
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")ฝังข้อความ MSG เป็นไฟล์แนบซ้อนกัน:
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")คุณสมบัติ MAPI
อ่านและเขียนคุณสมบัติ MAPI ตามรหัสคุณสมบัติ:
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")วนซ้ำคุณสมบัติทั้งหมด:
for prop in msg.iter_properties():
print(f"Tag: {prop.property_tag:#010x}")การแปลงอีเมล
แปลงระหว่างรูปแบบ MSG (MAPI) และอีเมล (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")การดำเนินการ CFB ระดับต่ำ
อ่านโครงสร้างคอนเทนเนอร์ CFB โดยตรง:
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()เขียนเอกสาร CFB:
from aspose.email_foss.msg import MsgWriter
data = msg.to_bytes()
with open("output.msg", "wb") as f:
f.write(data)เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- ควรเรียกใช้เสมอ
msg.close()หรือใช้ตัวจัดการบริบทเมื่ออ่านเสร็จเพื่อปล่อยตัวจัดการไฟล์ - ใช้
msg.validation_issuesเพื่อตรวจสอบปัญหาการปฏิบัติตามรูปแบบ MSG - ค่า
strictพารามิเตอร์ในMapiMessage.from_file()ควบคุมความทนทานต่อข้อผิดพลาด — ตั้งค่าเป็นFalseสำหรับการพาร์สแบบผ่อนคลาย - ข้อมูลแนบทั้งหมดจะถูกโหลดเข้าสู่หน่วยความจำระหว่าง
from_file()— ใช้att.dataเพื่อเข้าถึงไบต์โดยตรง;iter_attachments_info()เป็นอิเทอเรเตอร์ที่สะดวกสำหรับรายการแนบที่ถูกเติมเต็มแล้ว - ใช้
to_email_string()สำหรับการแสดงตัวอย่างข้อความอย่างรวดเร็วโดยไม่ต้องสร้างอ็อบเจกต์อีเมลเต็มรูปแบบ
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
CFBError เมื่อโหลด | ไฟล์ CFB/MSG ไม่ถูกต้อง | ตรวจสอบว่าไฟล์เป็น Outlook MSG จริงหรือไม่ |
| เนื้อหาว่างเปล่าหลังการโหลด | เนื้อหาถูกเก็บในรูปแบบ HTML เท่านั้น | ตรวจสอบ msg.body_html แทน msg.body |
| ไม่มีผู้รับ | MSG ไม่มีที่เก็บผู้รับ | ผู้รับเป็นตัวเลือกในรูปแบบ MSG; ตรวจสอบ iter_attachments_info() |
FAQ
เวอร์ชันของรูปแบบ MSG ที่รองรับคืออะไร?
ไลบรารีนี้อ่านและเขียนไฟล์ MSG ในรูปแบบ CFB v3 และ v4 ซึ่งเข้ากันได้กับ Microsoft Outlook.
ฉันสามารถอ่านไฟล์ EML ได้หรือไม่?
ไม่โดยตรง. ไลบรารีจัดการรูปแบบ MSG. ใช้ MapiMessage.from_email_message() เพื่อแปลงจาก RFC 5322 EmailMessage อ็อบเจ็กต์.
รองรับความปลอดภัยต่อเธรดหรือไม่?
แต่ละ MapiMessage และ CFBReader อินสแตนซ์เป็นอิสระ. การเข้าถึงพร้อมกันของอินสแตนซ์แยกจากเธรดแยกต่างหากนั้นปลอดภัย.
สรุปการอ้างอิง API
| คลาส / เมธอด | คำอธิบาย |
|---|---|
MapiMessage | การแสดงข้อความ MSG ระดับสูง |
MapiMessage.from_file() | โหลดไฟล์ MSG |
MapiMessage.create() | สร้างข้อความ MSG ใหม่ |
MapiMessage.save() | บันทึกเป็นไฟล์ MSG |
MapiMessage.to_email_message() | แปลงเป็น EmailMessage (RFC 5322) |
MapiMessage.from_email_message() | แปลงจาก EmailMessage เป็น MSG |
MapiMessage.add_recipient() | เพิ่มผู้รับ |
MapiMessage.add_attachment() | เพิ่มไฟล์แนบแบบไบนารี |
MapiAttachment | ไฟล์แนบในข้อความ |
MapiRecipient | ผู้รับในข้อความ |
MapiProperty | รายการคุณสมบัติ MAPI |
CFBReader | ตัวอ่านคอนเทนเนอร์ CFB ระดับต่ำ |
CFBWriter | ตัวเขียนคอนเทนเนอร์ CFB ระดับต่ำ |
MsgReader | ตัวอ่านโครงสร้าง MSG ระดับต่ำ |