مقدمه

Aspose.Email FOSS for Python is now available on PyPI: a free, MIT-licensed library for creating, reading, and converting Outlook .msg فایل‌ها به‌صورت کامل در Python هستند، بدون وابستگی به Microsoft Office یا هر افزونه بومی. نصب آن با pip install aspose-email-foss>=26.3 و بلافاصله با کانتینرهای MSG و CFB کار کنید.

این کتابخانه برای Python نسخه 3.10 و بالاتر هدف‌گذاری شده است. این کتابخانه فرمت Compound File Binary (CFB) و فرمت پیام MSG را از ابتدا پیاده‌سازی می‌کند و به شما کنترل قطعی بر نحوه سریال‌سازی و خواندن پیام‌های ایمیل می‌دهد. از آنجا که پیاده‌سازی کاملاً Python است، به‌صورت یکسان بر روی Windows، macOS، Linux و در محیط‌های کانتینری اجرا می‌شود.

Aspose.Email FOSS is designed for developers building email processing pipelines, compliance archival tools, forensic analysis workflows, or any application that needs to create or inspect Outlook-compatible message files without a running Exchange or Outlook installation.


ویژگی‌های کلیدی

ایجاد فایل‌های MSG

ساخت سازگار با Outlook .msg فایل‌ها را از ابتدا با استفاده از MapiMessage.create(). ویژگی‌های استاندارد MAPI مانند موضوع، فرستنده، زمان تحویل و فیلدهای نمایش از طریق the PropertyId enum. دریافت‌کنندگان را با add_recipient() و پیوست‌های فایل با add_attachment(), سپس نتیجه را روی دیسک ذخیره کنید.

from aspose.email_foss import msg

message = msg.MapiMessage.create(
    "Quarterly status update and rollout plan",
    "Hello team,\n\nPlease find the latest rollout summary attached.\n\nRegards,\nEngineering",
)

message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "build.agent@example.com")
message.set_property(msg.PropertyId.INTERNET_MESSAGE_ID, "<example-001@example.com>")

message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient("bob@example.com", display_name="Bob Example")
message.add_recipient(
    "carol@example.com",
    display_name="Carol Example",
    recipient_type=msg.RECIPIENT_TYPE_CC,
)

message.add_attachment("hello.txt", b"sample attachment\n", mime_type="text/plain")
message.save("example-message.msg")

خواندن و تبدیل MSG به EML

یک مورد موجود را بارگذاری کنید .msg فایل با MapiMessage.from_file() و آن را به یک Python استاندارد تبدیل کنید EmailMessage شیء از طریق to_email_message(). از آنجا، به بایت‌های EML سریالیزه کنید برای ذخیره‌سازی یا ارسال از طریق SMTP.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("example-message.msg") as loaded:
    email_message = loaded.to_email_message()
    eml_bytes = email_message.as_bytes()

with open("example-message.eml", "wb") as f:
    f.write(eml_bytes)

بازرسی داخلی MSG

استفاده کنید MsgReader و زیرساخت آن CFBReader برای بررسی ساختار باینری یک فایل MSG. به متادیتای CFB (نسخه، اندازهٔ سکتور، تعداد ورودی‌های دایرکتوری) دسترسی پیدا کنید و بر روی ورودی‌های ویژگی MAPI در سطح باینری تکرار کنید.

from aspose.email_foss import msg

reader = msg.MsgReader.from_file("example-message.msg")
cfb = reader.cfb_reader

print(f"CFB major_version={cfb.major_version}")
print(f"sector_size={cfb.sector_size}")
print(f"directory_entries={cfb.directory_entry_count}")

for entry in reader.iter_top_level_fixed_length_properties():
    tag = entry.property_tag
    print(f"tag=0x{tag:08X} flags=0x{entry.flags:08X} value={entry.value.hex()}")

reader.close()

دسترسی سطح پایین CFB

خواندن و پیمایش هر محفظهٔ Compound File Binary با استفاده از CFBReader. فهرست‌برداری از ذخیره‌سازی‌ها و جریان‌ها، حل مسیرها بر اساس نام، و استخراج داده‌های خام جریان برای پردازش سفارشی.

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("example-message.msg")

for entry in reader.iter_storages():
    print(f"Storage: {entry.name}")

for entry in reader.iter_streams():
    data = reader.get_stream_data(entry.stream_id)
    print(f"Stream: {entry.name} size={len(data)}")

reader.close()

شروع سریع

کتابخانه را نصب کنید و اولین فایل MSG خود را در کمتر از ده خط ایجاد کنید:

pip install aspose-email-foss>=26.3
from aspose.email_foss import msg

message = msg.MapiMessage.create("Hello from Python", "This is a test message.")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "sender@example.com")
message.add_recipient("recipient@example.com", display_name="Recipient")
message.save("hello.msg")

with msg.MapiMessage.from_file("hello.msg") as loaded:
    eml = loaded.to_email_message()
    print(eml["Subject"])

فرمت‌های پشتیبانی‌شده

قالبوارد کردنصدور
MSGبلهبله
CFBبلهبله

منبع باز و مجوزدهی

Aspose.Email FOSS for Python is released under the MIT License. می‌توانید از آن در پروژه‌های شخصی، داخلی و تجاری بدون محدودیت استفاده کنید. کد منبع در دسترس است on GitHub.


شروع کار