Введение
Программное анализирование сообщений электронной почты является обычным требованием для миграции данных, архивных рабочих процессов и инструментов соответствия. Файлы Outlook MSG используют формат контейнера Compound File Binary (CFB) с свойствами MAPI для кодирования метаданных сообщения, содержания корпуса, получателей и приложений. Работа с этим форматом в Python традиционно требует либо коммерческих библиотек, либо манипуляций на низком уровне .
В связи с этим aspose-email-foss пакет предоставляет чистую библиотеку с лицензией MIT для чтения, создания и преобразования файлов Outlook MSG. Он раскрывает высокоуровневую программу Microsoft Office Access. MapiMessage API для общих задач наряду с низким уровнем MsgReader библиотека требует Python 3.10 или более поздней версии и не имеет нативных зависимостей.
Независимо от того, нужно ли вам извлечь строку и тело предмета из базы архивных сообщений, перечислить приложения для индексации или преобразовать файлы MSG в стандартный формат RFC 5322, эта библиотека обрабатывает бинарное анализаторство, чтобы вы могли сосредоточиться на логике вашего прибора.
Что входит в него?
Чтение файлов MSG с помощью MapiMessage
В связи с этим MapiMessage class - это первичная точка входа для анализа файлов 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 объекты, которые предоставляют имя файла, необработанные байты (raw bytes), тип 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}"
)
Преобразование МСГ в ЭМЛ
В связи с этим 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() Необходимость в прямом анализе файлов EML не предусмотрена стандартная библиотека обрабатывает формат wire-формата.
Открытый исходный код и лицензирование
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.
- База знаний статьи с инструкциями и часто задаваемые вопросы
- Ссылка на API полная ссылка на класс и метод