Как создать файлы 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 поддерживает более крупные файлы.