บทนำ
การแยกวิเคราะห์ข้อความอีเมลโดยโปรแกรมเป็นความต้องการทั่วไปสำหรับการย้ายข้อมูล, กระบวนการจัดเก็บ, และเครื่องมือการปฏิบัติตามกฎระเบียบ. ไฟล์ Outlook MSG ใช้รูปแบบคอนเทนเนอร์ Compound File Binary (CFB) พร้อมคุณสมบัติ MAPI เพื่อเข้ารหัสเมตาดาต้าของข้อความ, เนื้อหาตัวข้อความ, ผู้รับ, และไฟล์แนบ. การทำงานกับรูปแบบนี้ใน Python โดยทั่วไปจำเป็นต้องใช้ไลบรารีเชิงพาณิชย์หรือการจัดการไบนารีระดับต่ำ.
แพคเกจ aspose-email-foss มอบไลบรารีแบบ pure-Python ใบอนุญาต MIT สำหรับการอ่าน, สร้าง, และแปลงไฟล์ Outlook MSG. ไลบรารีนี้เปิดเผย MapiMessage API ระดับสูงสำหรับงานทั่วไปพร้อมกับการเข้าถึง MsgReader ระดับล่างสำหรับการตรวจสอบรายละเอียดของโครงสร้าง CFB ที่อยู่ด้านล่าง. ไลบรารีต้องการ Python 3.10 หรือใหม่กว่าและไม่มีการพึ่งพาเนทีฟ.
ไม่ว่าคุณจะต้องการสกัดบรรทัดหัวเรื่องและเนื้อหาจากชุดข้อความที่จัดเก็บ, นับไฟล์แนบเพื่อทำดัชนี, หรือแปลงไฟล์ MSG ไปเป็นรูปแบบ RFC 5322 มาตรฐาน, ไลบรารีนี้จะจัดการการแยกวิเคราะห์ไบนารีเพื่อให้คุณมุ่งเน้นที่ตรรกะของแอปพลิเคชันของคุณ.
สิ่งที่รวมอยู่
การอ่านไฟล์ MSG ด้วย MapiMessage
คลาส MapiMessage เป็นจุดเข้าหลักสำหรับการแยกวิเคราะห์ไฟล์ Outlook MSG. เปิดไฟล์, เข้าถึงคุณสมบัติของมัน, และปิดอย่างสะอาดด้วยตัวจัดการบริบท.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("meeting-invite.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body: {message.body[:200]}")
print(f"HTML body available: {message.body_html is not None}")
วิธี from_file อ่านคอนเทนเนอร์ CFB, แยกวิเคราะห์สตรีมคุณสมบัติ MAPI, และเติมค่าแอตทริบิวต์ที่มีชนิดข้อมูล. คุณสมบัติ subject, body, และ body_html คืนสตริงที่ถอดรหัสโดยตรง.
การสกัดผู้รับ
ไฟล์ MSG ทุกไฟล์จะเก็บข้อมูลผู้รับไว้ในที่เก็บ MAPI เฉพาะ. คุณสมบัติ MapiMessage.recipients คืนรายการของอ็อบเจกต์ MapiRecipient ที่มีฟิลด์แบบกำหนดชนิดสำหรับชื่อที่แสดง, ที่อยู่อีเมล, และประเภทผู้รับ (TO, CC, หรือ BCC).
from aspose.email_foss import msg
with msg.MapiMessage.from_file("team-update.msg") as message:
for recipient in message.recipients:
print(
f"{recipient.display_name} <{recipient.email_address}> "
f"type={recipient.recipient_type}"
)
ทำงานกับไฟล์แนบ
วิธี iter_attachments_info ให้ผลลัพธ์เป็นอ็อบเจกต์ MapiAttachment ที่ให้ชื่อไฟล์, ไบต์ดิบ, ประเภท MIME, และ Content-ID ทางเลือกสำหรับภาพแบบอินไลน์.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("report.msg") as message:
for att in message.iter_attachments_info():
print(f" {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
if att.content_id:
print(f" inline content-id: {att.content_id}")
การเข้าถึงคุณสมบัติ MAPI
สำหรับสถานการณ์ที่ต้องการค่าคุณสมบัติ MAPI เฉพาะที่เกินกว่าคุณลักษณะสะดวก, ให้ใช้ get_property_value พร้อมค่าคงที่ PropertyId. วิธีนี้ให้การเข้าถึงโดยตรงกับคุณสมบัติใดก็ได้ที่เก็บไว้ในไฟล์ MSG.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("notification.msg") as message:
sender = message.get_property_value(msg.PropertyId.SENDER_NAME)
email = message.get_property_value(msg.PropertyId.SENDER_EMAIL_ADDRESS)
delivery = message.get_property_value(msg.PropertyId.MESSAGE_DELIVERY_TIME)
print(f"From: {sender} <{email}>")
print(f"Delivered: {delivery}")
การวนซ้ำคุณสมบัติทั้งหมด
เมื่อคุณต้องการตรวจสอบคุณสมบัติทุกอย่างในข้อความ (เพื่อการดีบัก, การตรวจสอบ, หรือการย้ายข้อมูล) วิธี iter_properties จะให้วัตถุ MapiProperty พร้อมข้อมูลแท็กและค่าที่ครบถ้วน.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("sample.msg") as message:
for prop in message.iter_properties():
print(
f"tag=0x{prop.property_tag:08X} "
f"type=0x{prop.property_type:04X} "
f"value={prop.value!r}"
)
แปลง MSG เป็น EML
วิธี to_email_message จะแปลง MSG ที่แยกวิเคราะห์แล้วเป็นวัตถุ Python email.message.EmailMessage มาตรฐาน จากนั้นคุณสามารถทำซีเรียลไลซ์ข้อความเป็นรูปแบบ RFC 5322 (EML) ด้วยไลบรารีมาตรฐาน.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("archive.msg") as message:
email_message = message.to_email_message()
eml_bytes = email_message.as_bytes()
with open("archive.eml", "wb") as f:
f.write(eml_bytes)
โปรดทราบว่าการส่งออก EML ใช้โมดูล email ที่รวมมาใน Python สำหรับการซีเรียลไลซ์ ไลบรารีจะจัดการการแปลงจาก MSG ไปยัง MAPI ไปยัง EmailMessage; ไลบรารีมาตรฐานจะจัดการรูปแบบสาย RFC 5322.
เริ่มต้นอย่างรวดเร็ว
ติดตั้งแพ็กเกจจาก PyPI และแยกวิเคราะห์ไฟล์ MSG แรกของคุณในน้อยกว่า 20 บรรทัด:
# Install: pip install aspose-email-foss>=26.3
from aspose.email_foss import msg
# Create a new message
message = msg.MapiMessage.create(
"Project status update",
"Hello team,\n\nPlease review the attached report.\n\nRegards",
)
message.add_recipient("alice@example.com", display_name="Alice")
message.add_attachment("notes.txt", b"meeting notes\n", mime_type="text/plain")
message.save("status-update.msg")
# Read it back and extract data
with msg.MapiMessage.from_file("status-update.msg") as loaded:
print(f"Subject: {loaded.subject}")
print(f"Recipients: {len(loaded.recipients)}")
for att in loaded.iter_attachments_info():
print(f"Attachment: {att.filename} ({len(att.data)} bytes)")
รูปแบบที่รองรับ
| รูปแบบ | ส่วนขยาย | อ่าน | เขียน |
|---|---|---|---|
| Outlook MSG | .msg | ใช่ | ใช่ |
| Compound File Binary | .cfb | ใช่ | ใช่ |
| EML (ผ่านการแปลง) | .eml | ใช่ (via from_email_message) | ใช่ (via to_email_message) |
การสนับสนุน EML ทำงานผ่านการแปลง: MapiMessage.from_email_message() นำเข้าจากวัตถุ Python email.message.EmailMessage และ to_email_message() ส่งออกกลับ การแยกวิเคราะห์ไฟล์ EML โดยตรงไม่ได้ถูกจัดหา — ไลบรารีมาตรฐานจะจัดการรูปแบบสาย EML.
ซอร์สเปิด & การให้สิทธิ์
Aspose.Email FOSS สำหรับ Python ได้รับการเผยแพร่ภายใต้สัญญาอนุญาต MIT. คุณสามารถใช้, แก้ไข, และแจกจ่ายไลบรารีได้ทั้งในโครงการเชิงพาณิชย์และไม่เชิงพาณิชย์. โค้ดต้นฉบับเต็มพร้อมให้เข้าถึงที่ GitHub.
ไลบรารีเป็นการนำไปใช้แบบ pure-Python โดยไม่มีส่วนขยายที่คอมไพล์หรือการพึ่งพาเนทีฟ. มันทำงานบนแพลตฟอร์มใด ๆ ที่รองรับ Python 3.10 หรือใหม่กว่า.
เริ่มต้นใช้งาน
สำรวจแหล่งข้อมูลเพิ่มเติมสำหรับการทำงานกับ Aspose.Email FOSS สำหรับ Python:
- Developer Guide — เอกสารเต็มรูปแบบพร้อมบทเรียนและการสาธิต API
- Knowledge Base — บทความวิธีทำและคำถามที่พบบ่อย
- API Reference — อ้างอิงคลาสและเมธอดอย่างครบถ้วน