Въведение
Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and Конвертиране на файлове за съобщения, съвместими с Outlook в чист Python. Достъпно на PyPI като aspose-email-foss, работи на Windows, macOS, Linux, Docker и безсервърни среди Няма зависимост от Microsoft Office и няма собствено работно време.
В библиотеката се намират две основни области: високо ниво на MAPI слой (MapiMessageза работа с съобщения, тела, получатели и приложки; и ниско ниво на структурна Стъпка (MsgReader, CFBReader, CFBStorage, CFBStreamТова показва суровото съединение. Бинарни контейнери, които подчиняват всеки .msg датотеката .
Тази статия преминава през ключовите функции, изпратени в версия 26.3, базирани на потвърдената API повърхност.
Ключови характеристики
Създаване на високо ниво на съобщение с MapiMessage
MapiMessage е основната точка за влизане, за да се създадат съобщения, съвместими с Outlook от Скратч. повикване 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.Той излага вноски на най-високо ниво, съхранение на получатели и анекдотите се съхраняват индивидуално, което го прави практичен за проверка на големи файлове и Валидиране на тръбопровод.
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: Изтегляне, модифициране и спасяване
Защото MapiMessage Подкрепа from_file() За зареждане и save() За писане, пълно цикъл на четене-изменение-пишене изисква само няколко линии. именовани свойства, типови обозначения и Уникалната лента за управление е достъпна чрез set_property, PropertyId,и MapiNamedProperty.
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()• Изграждане А 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 контейнер за превоз на стоки
Всеки .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.
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>=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)
Подкрепени формати
| Форматът | Разширяване | Прочетете | Писане |
|---|---|---|---|
| Съединение на файловете бинарни | .cfb | ✓ | ✓ |
| Изпращане на Outlook | .msg | ✓ | ✓ |
| EML / RFC 5322 | .eml | ✓ | ✓ |
Отворени източници и лицензиране
Aspose.Email FOSS for Python is released under the MIT License. The source repository is Достъпни в github.com/аспо-електронна поща И на Пакетът е публикуван на PyPI като aspose-email-foss.търговска употреба, модификация и Всички условия за преразпределение са разрешени съгласно условията на MIT.