Как начать с Aspose.Email FOSS для Python
aspose-email-foss Python — это бесплатная, лицензированная MIT библиотека для создания, чтения и использования в программах. Конвертирование файлов и контейнеров CFB Outlook — не требуется Microsoft Office, нет нации Прямые расширения Python от PyPI.
Пошаговое руководство
Шаг 1: Установите пакет
Установить с помощью PyPI:
pip install aspose-email-fossПроверьте, что установка загружена правильно:
from aspose.email_foss.msg import MapiMessage
print("aspose-email-foss is ready.")Шаг 2: Импорт необходимых классов
Импортируйте модули, необходимые для создания сообщений, назначения свойств и конверсии форматов:
from datetime import datetime, timezone
from aspose.email_foss import msg
from aspose.email_foss.msg import MapiMessage, PropertyIdШаг 3: Создание файла MSG
Используйте MapiMessage.create() для создания сообщения с темой и телом. Настройка метаданных отправителя с PropertyId константы, добавлять получателей и прикреплять файл.
message = MapiMessage.create("Getting Started", "Hello from aspose-email-foss!")
message.set_property(PropertyId.SENDER_NAME, "Build Agent")
message.set_property(PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")
message.set_property(
PropertyId.MESSAGE_DELIVERY_TIME,
datetime(2026, 1, 1, 9, 0, tzinfo=timezone.utc),
)
message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_attachment("notes.txt", b"Meeting notes go here.\n", mime_type="text/plain")
message.save("getting-started.msg")
print("getting-started.msg written.")Шаг 4: Прочитайте файл MSG назад
Загрузить сохраненный файл с помощью MapiMessage.from_file() как контекстный менеджер. Доступ к subject и body собственности непосредственно от возвращенного объекта.
with MapiMessage.from_file("getting-started.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body : {message.body}")Шаг 5: Преобразуйте MSG в EML
to_email_bytes() конвертирует загруженное сообщение в формат RFC 5322. Напишите результат на А .eml Файл с стандартной библиотекой.
from pathlib import Path
with MapiMessage.from_file("getting-started.msg") as message:
Path("getting-started.eml").write_bytes(message.to_email_bytes())
print("getting-started.eml written.")Общие проблемы и решения
ModuleNotFoundError: No module named 'aspose' Пакет не установлен в активной среде Python. pip install aspose-email-foss в той же виртуальной среде, которую вы используете для запуска сценария. подтвердить с помощью pip show aspose-email-foss.
FileNotFoundError Когда звонить MapiMessage.from_file() Путь, который вы пропустили, не существует или использует неправильный сепаратор для вашей ОС. pathlib.Path Для того чтобы построить дороги портально: MapiMessage.from_file(Path("folder") / "file.msg").
Файл MSG открывается в Outlook, но не показывает тему MapiMessage.create() принимает предмет как первый позиционный аргумент. если вы прошли пустой строки, Outlook показывает сообщение как незаглавленное. Пропустить неподпустую строку или настроить ее В явном с set_property(PropertyId.SUBJECT, "My Subject").
EML конверсия производит пустое тело to_email_bytes() использует body_html Если он установлен, и падает обратно в body.Подтвердить, что в по крайней мере одно из этих свойств не пусто после загрузки MSG с from_file().
Содержимое Unicode в получателях или предметах сокращено Прохождение unicode_strings=True Два MapiMessage.create() Чтобы обеспечить строгое свойство Сохранение в Unicode (PT_UNICODE) вместо ANSI (pt_STRING8).
Часто задаваемые вопросы
Требует ли Microsoft Office для электронной почты?
Библиотека полностью самообладает.Она читает и пишет бинарные MSG и CFB форматы на основе Python без какой-либо зависимости от Microsoft Office, COM автоматизации или Win32 API.
Можно ли использовать эту библиотеку на Linux или macOS?
Да да . aspose-email-foss является чистым Python и работает на любой платформе, которая поддерживает Python 3.10 или более поздние — включая Windows, macOS, Linux, Docker-контейнеры и беспроводные функции.
Свободно ли библиотека для коммерческого использования?
Да. Он выпущен под лицензией MIT. Вы можете использовать, модифицировать и распространять его для любых целей, включая коммерческие приложения, без роялти или требований к назначению за пределами текста лицензии.
Как добавить CC и BCC приемники?
Прохождение recipient_type=msg.RECIPIENT_TYPE_CC или msg.RECIPIENT_TYPE_BCC Как третий аргументация add_recipient():
message.add_recipient("bob@example.com", display_name="Bob", recipient_type=msg.RECIPIENT_TYPE_CC)Как я встраиваю один MSG внутри другого?
Используйте MapiMessage.add_embedded_message_attachment(),Проходя через внутренний MapiMessage Объект как первый аргумент:
inner = MapiMessage.create("Inner message", "Embedded body.")
outer = MapiMessage.create("Outer message", "See attachment.")
outer.add_embedded_message_attachment(inner, "inner.msg")
outer.save("outer.msg")