Въведение

Програмиране на имейл съобщения е обща необходимост за миграция на данни, архивиращи работни потоци и инструменти за съответствие. Outlook MSG файлове използват форматът на контейнер Compound File Binary (CFB) с MAPI свойства за кодиране метаданни на събеседване, телесно съдържание, получатели и приложения. Работа с този формати в Python традиционно изисква или търговски библиотеки или ниско ниво бинарна манипулация.

и на aspose-email-foss пакета осигурява чиста Python, MIT лицензирана библиотека за четене, създаване и конвертиране на Outlook MSG файлове. MapiMessage API за общи задачи заедно с ниско ниво MsgReader Библиотеката изисква 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, bodybody_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 и опционален ИД за съдържание за изображения в линия.

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 изходът използва вградената Python email Библиотеката управлява конверсията MSG-to-MAPI- to-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)")

Подкрепени формати

ФорматътРазширяванеПрочететеПисане
Изглед MSG.msgДаДа
Съединение на файловете бинарни.cfbДаДа
EML (пренасочване чрез конверсия).emlДа (през from_email_message)Да (през to_email_message)

EML подкрепа работи чрез конверсия: MapiMessage.from_email_message() Изтегляне от Python email.message.EmailMessage обекта и to_email_message() Direct EML файл parsing не се предоставя – стандартната библиотека управлява форматът на EMM.


Отворени източници и лицензиране

Aspose.Email FOSS for Python is released under the MIT license. You are free to use, modify, and distribute the library in both commercial and non-commercial projects. The full source code is available on GitHub.

Библиотеката е чиста Python изпълнение без компилирани разширения или коренни зависимост. тя работи на всяка платформа, която поддържа Python 3.10 или по-късно.


Започваме

Разгледайте повече ресурси, за да работите с Aspose.Email FOSS за Python: