วิธีแยกไฟล์ MSG ด้วย Python
aspose-email-foss สำหรับ Python ให้ API แบบ pure-Python สำหรับอ่านไฟล์ Outlook MSG โดยไม่ต้องพึ่งพา Microsoft Office โหลดไฟล์เข้าสู่วัตถุ MapiMessage เพื่อเข้าถึงข้อมูลข้อความทั้งหมด.
คู่มือแบบขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพคเกจ
pip install aspose-email-fossต้องการ Python 3.10 หรือใหม่กว่า.
ขั้นตอนที่ 2: นำเข้าคลาส MapiMessage
from aspose.email_foss.msg import MapiMessageขั้นตอนที่ 3: โหลดไฟล์ MSG
msg = MapiMessage.from_file("message.msg")สำหรับการพาร์สแบบยืดหยุ่นของไฟล์ที่มีรูปแบบไม่ถูกต้อง ให้ส่ง strict=False:
msg = MapiMessage.from_file("message.msg", strict=False)ขั้นตอนที่ 4: เข้าถึงคุณสมบัติของข้อความ
print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html[:200] if msg.body_html else 'None'}")
print(f"Message Class: {msg.message_class}")ขั้นตอนที่ 5: แสดงไฟล์แนบ
for att in msg.iter_attachments_info():
name = att.storage_name
is_embedded = att.is_embedded_message
print(f"Attachment: {name}, embedded={is_embedded}")ขั้นตอนที่ 6: ตรวจสอบโครงสร้าง CFB ระดับต่ำ
from aspose.email_foss.cfb import CFBReader
reader = CFBReader.from_file("message.msg")
print(f"Directory entries: {reader.directory_entry_count}")
for entry in reader.iter_streams():
print(f" Stream: {entry}")
reader.close()ปัญหาทั่วไปและการแก้ไข
CFBError ขณะโหลด
ไฟล์ไม่ใช่คอนเทนเนอร์ CFB ที่ถูกต้อง ตรวจสอบว่าเป็นไฟล์ Outlook MSG จริง ไม่ใช่ไฟล์ EML.
เนื้อหาของ Body ว่างเปล่า แต่ HTML body มีเนื้อหา
บางข้อความเก็บเนื้อหาไว้เฉพาะใน HTML. ตรวจสอบ msg.body_html เมื่อ msg.body คืนค่า None.
คำเตือนการตรวจสอบ
เข้าถึง msg.validation_issues เพื่อดูชุดของคำเตือนการปฏิบัติตามสำหรับไฟล์ที่โหลด.
คำถามที่พบบ่อย (FAQ)
ฉันสามารถอ่านไฟล์ EML ได้หรือไม่?
ไม่โดยตรง. ไลบรารีจัดการรูปแบบ MSG (CFB). แปลงเนื้อหา EML เป็นอ็อบเจ็กต์ EmailMessage ก่อน, แล้วใช้ MapiMessage.from_email_message().
การโหลดอ่านข้อมูลไฟล์แนบทั้งหมดเข้าสู่หน่วยความจำหรือไม่?
ไม่. เมตาดาต้าไฟล์แนบจะถูกอ่านตามความต้องการ. ใช้ iter_attachments_info() สำหรับการทำซ้ำแบบเบา.
มัน thread-safe หรือไม่?
แต่ละ MapiMessage อินสแตนซ์เป็นอิสระ การอ่านพร้อมกันจากอินสแตนซ์แยกต่างหากเป็นปลอดภัย.