Въведение
Програмиране на имейл съобщения е обща необходимост за миграция на данни, архивиращи работни потоци и инструменти за съответствие. 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, body,и body_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:
- Разработчик ръководство - пълна документация с туториали и API ходове
- Знание база Как да пишете статии и често задавани въпроси
- Огнено референтно - пълна класа и метод на референтност