Как создать файлы MSG в Python

Как создать файлы MSG в Python

aspose-email-foss для Python позволяет программно создавать файлы Outlook MSG без Microsoft Office.

Пошаговое руководство

Шаг 1: Установить пакет

pip install aspose-email-foss

Шаг 2: Создать сообщение

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Meeting Notes", "Please review the attached notes.")

Шаг 3: Добавить получателей

msg.add_recipient("alice@example.com", display_name="Alice Smith")
msg.add_recipient("bob@example.com", display_name="Bob Jones", recipient_type=RECIPIENT_TYPE_CC)

Используйте целочисленные константы RECIPIENT_TYPE_TO (1), RECIPIENT_TYPE_CC (2) или RECIPIENT_TYPE_BCC (3) из aspose.email_foss.msg.


Шаг 4: Добавить вложения

with open("notes.pdf", "rb") as f:
    msg.add_attachment("notes.pdf", f.read(), mime_type="application/pdf")

Чтобы встроить другое MSG‑сообщение:

inner = MapiMessage.create("Forwarded", "Original message body")
msg.add_embedded_message_attachment(inner, filename="forwarded.msg", mime_type="application/vnd.ms-outlook")

Шаг 5: Сохранить файл MSG

msg.save("output.msg")

Или получите байты для потоковой передачи:

data = msg.to_bytes()

Общие проблемы и решения

Пустые получатели в сохранённом файле

Убедитесь, что вызываете add_recipient() до save(). Получатели записываются во время сериализации.

Вложение не отображается в Outlook

Проверьте, что MIME‑тип правильный. Используйте "application/octet-stream" в качестве резервного варианта для неизвестных типов файлов.


Часто задаваемые вопросы (FAQ)

Могу ли я установить HTML‑тело?

Да. Используйте msg.body_html = "value", чтобы установить HTML‑тело после создания.

Могу ли я конвертировать MSG в формат EML?

Да. Вызовите msg.to_email_string(), чтобы получить представление RFC 5322.

Максимальный размер сообщения?

Твердого ограничения нет. CFB v3 поддерживает файлы размером до 2 ГБ; v4 поддерживает более крупные файлы.

 Русский