Introduction

Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and تبدیل فایل های پیام سازگار با Outlook به Python خالص در دسترس در PyPI به عنوان aspose-email-foss, آن را در ویندوز، macOS، لینوکس، Docker و محیط های بدون سرور کار می کند بدون وابستگی به Microsoft Office و هیچ زمان اجرا مالکیت.

این کتابخانه دو حوزه اصلی را پوشش می دهد: یک لایه MAPI سطح بالا (MapiMessage) برای کار کردن با موضوعات پیام، اجسام، گیرنده ها و پیوست های؛ و ساختار سطح پایین تگ ها (MsgReader, CFBReader, CFBStorage, CFBStreamکه ترکیب خام را نشان می دهد. فایل های دوگانه که هر یک از آنها را تحت پوشش قرار می دهند .msg فایل ها .

این مقاله از ویژگی های کلیدی ارسال شده در نسخه 26.3، بر روی سطح API تایید شده است.


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

ایجاد پیام با MapiMessage

MapiMessage این نقطه اصلی برای ایجاد پیام های سازگار با Outlook است. زنگ زدن - Call MapiMessage.create() با یک موضوع و بدن، اضافه کردن گیرنده ها و در این صورت، به طور مستقیم به یک .msg فایل ها .

from aspose.email_foss import msg

message = msg.MapiMessage.create(
    "Quarterly status update",
    "Hello team,\n\nPlease review the attached summary.\n\nRegards,\nEngineering",
)

message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")

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

message.add_attachment("report.txt", b"Summary content here.\n", mime_type="text/plain")
message.save("output.msg")

خواندن و بررسی فایل های MSG

MsgReader دسترسی به یک سیستم موجود را فراهم می کند. .msg فایل بدون بارگذاری کامل در A MapiMessage.این در حال حاضر دارای ذخایر و ذخیره سازی های مالکیت بالا است و… ذخیره سازی پیوند به صورت جداگانه، آن را برای بازرسی فایل های بزرگ و گواهینامه های لوله.

with msg.MsgReader.from_file(“output.msg”) as reader: header = reader.top_level_header print(f"Recipients : {header.recipient_count}") print(f"Attachments: {header.attachment_count}")

for entry in reader.iter_recipient_storages():
    _, props = reader.parse_subobject_property_stream(entry.stream_id)
    print(f"  Recipient storage {entry.name}: {len(props)} property entries")

```python
from aspose.email_foss import msg

with msg.MsgReader.from_file("output.msg") as reader:
    header = reader.top_level_header
    print(f"Recipients : {header.recipient_count}")
    print(f"Attachments: {header.attachment_count}")

    for entry in reader.iter_recipient_storages():
        _, props = reader.parse_subobject_property_stream(entry.stream_id)
        print(f"  Recipient storage {entry.name}: {len(props)} property entries")

MSG Round-Trip: بارگذاری، تغییر، ذخیره

Because MapiMessage پشتیبانی from_file() برای بارگذاری و save() برای نوشتن، یک پر از چرخه خواندن و تغییر نوشتن فقط چند خط را نیاز دارد. ویژگی های نامیده شده، نمونه های تایپ شده و… استفاده از یک کد در دسترس است. set_property, PropertyIdMapiNamedProperty.

with msg.MapiMessage.from_file(“original.msg”) as message: message.set_property(msg.PropertyId.SUBJECT, “Updated Subject”) message.save(“updated.msg”)


```python
from aspose.email_foss import msg

with msg.MapiMessage.from_file("original.msg") as message:
    message.set_property(msg.PropertyId.SUBJECT, "Updated Subject")
    message.save("updated.msg")

EML / RFC 5322 تبدیل

MapiMessage.to_email_message() تبدیل یک MSG بارگذاری شده به Python استاندارد email.message.EmailMessage موضوع، امکان صادرات به RFC 5322 .eml فرمت استفاده در این کتاب، به صورت مستقیم (MapiMessage.from_email_message()ساختارها A MapiMessage از یک EmailMessage.

from pathlib import Path
from aspose.email_foss import msg

with msg.MapiMessage.from_file("message.msg") as message:
    eml_bytes = message.to_email_bytes()
    Path("message.eml").write_bytes(eml_bytes)

# Reverse: load EML into MapiMessage
import email
raw_eml = Path("message.eml").read_bytes()
email_obj = email.message_from_bytes(raw_eml)
mapi = msg.MapiMessage.from_email_message(email_obj)
mapi.save("from_eml.msg")

CFB کانتینر حمل و نقل

Every .msg فایل یک مخزن ترکیبی دوگانه (CFB) است. CFBReader ارائه می دهد فقط دسترسی به درخت دایرکتوری، اجازه می دهد تا شما لیست ذخیره سازی و جریان ها، راه رفتن در هیرارکی، و استخراج بایت جریان خام – بدون تکیه بر MsgReader.

from aspose.email_foss.cfb import CFBReader

with CFBReader.from_file("message.msg") as reader:
    print(f"CFB version  : {reader.major_version}")
    print(f"Sector size  : {reader.sector_size}")

    for depth, entry in reader.iter_tree():
        indent = "  " * depth
        size = entry.stream_size if entry.is_stream() else "-"
        print(f"{indent}{entry.name}  [size={size}]")

آتاتورگ رفتار

اضافه کردن پیوندها از طریق MapiMessage.add_attachment() (برای داده های دوگانه) یا MapiMessage.add_embedded_message_attachment() (برای پیام های MSG نستیده شده) هر دو روش یک نام فایل، بایت های خام و نوع MIME اختیاری را بپذیرید.

message = msg.MapiMessage.create(“Attachment demo”, “See files below.”) message.add_attachment(“data.csv”, b"id,value\n1,100\n", mime_type=“text/csv”)

inner = msg.MapiMessage.create(“Nested message”, “This is embedded.”) message.add_embedded_message_attachment(inner, “nested.msg”) message.save(“with_attachments.msg”)


---

```python
from aspose.email_foss import msg

message = msg.MapiMessage.create("Attachment demo", "See files below.")
message.add_attachment("data.csv", b"id,value\n1,100\n", mime_type="text/csv")

inner = msg.MapiMessage.create("Nested message", "This is embedded.")
message.add_embedded_message_attachment(inner, "nested.msg")
message.save("with_attachments.msg")

سریع شروع

pip install aspose-email-foss

Create and save a minimal MSG

message = msg.MapiMessage.create(“Hello World”, “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”)

Load it back and convert to EML

with msg.MapiMessage.from_file(“hello.msg”) as loaded: print(loaded.get_property_value(msg.PropertyId.SUBJECT)) eml = loaded.to_email_bytes() open(“hello.eml”, “wb”).write(eml)


---

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

# Create and save a minimal MSG
message = msg.MapiMessage.create("Hello World", "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")

# Load it back and convert to EML
with msg.MapiMessage.from_file("hello.msg") as loaded:
    print(loaded.get_property_value(msg.PropertyId.SUBJECT))
    eml = loaded.to_email_bytes()
    open("hello.eml", "wb").write(eml)

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

FormatExtensionReadWrite
فایل های ترکیبی دوگانه.cfb
پیام Outlook.msg
EML / RFC 5322.eml

منبع باز و مجوز

Aspose.Email FOSS for Python is released under the MIT License. The source repository is در دسترس است github.com/آموزش ایمیل و آن این کتاب در پی پی سی به عنوان aspose-email-foss.استفاده تجاری، اصلاح و… توزیع مجدد همه تحت شرایط MIT مجاز است.


شروع می شود

منابع مرتبط