คุณลักษณะและฟังก์ชันการทำงาน

คุณลักษณะและฟังก์ชันการทำงาน

คุณลักษณะและฟังก์ชันการทำงาน

หน้านี้ครอบคลุมคุณลักษณะหลักทั้งหมดของ 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 ระดับต่ำ
 ภาษาไทย