Як почати працювати з FOSS для Python
aspose-email-foss Python — безкоштовна бібліотека для створення, читання та використання. конвертація файлів Outlook MSG та контейнерів CFB — не потрібно Microsoft Office, немає рідного Розширення Python від PyPI.
Крок за кроком посібник
Крок 1: Встановити пакет
Альтернативно, використовуйте cells.get_cell_by_name(address).put_value(value), коли у вас є адреса клітинки у вигляді рядка:
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 2 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 контейнери та функції без сервера.
Чи є бібліотека вільною для комерційного використання?
Ви можете використовувати, змінювати і розповсюджувати його для будь-яких цілей, включаючи комерційні програми, без роялті або вимог до атрибуції за межами тексту ліцензії.
Як додати 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)Як встановити один з них всередині іншого?
Використовуйте 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")