Функции и возможности

Функции и возможности

Эта страница охватывает все основные функции aspose-email-foss 26.3 с работающими Python примерами.


Чтение файлов MSG

Загрузите файл MSG и получите доступ к его основным свойствам:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.from_file("message.msg")

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html}")
print(f"Message Class: {msg.message_class}")

Создание файлов MSG

Создайте новое сообщение с нуля:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")

Установите тему и тело в существующем сообщении:

msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")

Получатели

Добавьте получателей с отображаемыми именами и типами:

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Hello", "Message body")
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)
msg.save("with_recipients.msg")

Вложения

Добавьте двоичные вложения файлов:

with open("report.pdf", "rb") as f:
    data = f.read()

msg.add_attachment("report.pdf", data, mime_type="application/pdf")
msg.save("with_attachment.msg")

Вставьте сообщение MSG как вложение внутри вложения:

inner = MapiMessage.create("Inner Subject", "Inner body")
msg.add_embedded_message_attachment(inner, filename="embedded.msg", mime_type="application/vnd.ms-outlook")
msg.save("with_embedded.msg")

Свойства MAPI

Чтение и запись свойств MAPI по идентификатору свойства:

from aspose.email_foss.msg import PropertyId

# Read a property
subject = msg.get_property(PropertyId.SUBJECT)

# Set a property
msg.set_property(PropertyId.SUBJECT, "New Subject")

Перебор всех свойств:

for prop in msg.iter_properties():
    print(f"Tag: {prop.property_tag:#010x}")

Конвертация электронной почты

Преобразование между форматами MSG (MAPI) и email (RFC 5322):

# MSG to email string
email_str = msg.to_email_string()
print(email_str[:500])

# MSG to EmailMessage object
email_msg = msg.to_email_message()

# EmailMessage back to MapiMessage
msg2 = MapiMessage.from_email_message(email_msg)
msg2.save("roundtrip.msg")

Низкоуровневые операции CFB

Чтение структуры контейнера CFB напрямую:

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"File size: {reader.file_size} bytes")
print(f"Sectors: {reader.fat_sector_count}")
print(f"Entries: {reader.directory_entry_count}")

for entry in reader.iter_storages():
    print(f"Storage: {entry}")

for entry in reader.iter_streams():
    print(f"Stream: {entry}")

reader.close()

Запись документов CFB:

from aspose.email_foss.msg import MsgWriter

data = msg.to_bytes()
with open("output.msg", "wb") as f:
    f.write(data)

Советы и лучшие практики

  • Всегда вызывайте msg.close() или используйте менеджер контекста после завершения чтения, чтобы освободить дескрипторы файлов
  • Используйте msg.validation_issues для проверки проблем соответствия формата MSG
  • Эта strict параметр в MapiMessage.from_file() управляет допуском ошибок — установите в False для менее строгого разбора
  • Все данные вложений загружаются в память во время from_file() — использовать att.data для прямого доступа к байтам; iter_attachments_info() является удобным итератором по уже заполненному списку вложений
  • Используйте to_email_string() для быстрого предварительного просмотра текста без полного построения объекта письма

Распространённые проблемы

ПроблемаПричинаИсправление
CFBError при загрузкеНе является действительным файлом CFB/MSGУбедитесь, что файл является настоящим Outlook MSG
Пустое тело после загрузкиТело хранится только в HTMLПроверить msg.body_html вместо msg.body
Отсутствуют получателиMSG не имеет хранилищ получателейПолучатели необязательны в формате MSG; проверьте iter_attachments_info()

FAQ

Какие версии формата MSG поддерживаются?

Библиотека читает и записывает файлы MSG в формате CFB v3 и v4, совместимом с Microsoft Outlook.

Могу ли я читать файлы EML?

Не напрямую. Библиотека обрабатывает формат MSG. Используйте MapiMessage.from_email_message() для преобразования из RFC 5322 EmailMessage объекты.

Поддерживается ли потокобезопасность?

Каждый MapiMessage и CFBReader экземпляр независим. Параллельный доступ к отдельным экземплярам из разных потоков безопасен.


Сводка справочного API

Класс / МетодОписание
MapiMessageВысокоуровневое представление сообщения MSG
MapiMessage.from_file()Загрузить файл MSG
MapiMessage.create()Создать новое сообщение MSG
MapiMessage.save()Сохранить в файл MSG
MapiMessage.to_email_message()Преобразовать в EmailMessage (RFC 5322)
MapiMessage.from_email_message()Преобразовать из EmailMessage в MSG
MapiMessage.add_recipient()Добавить получателя
MapiMessage.add_attachment()Добавить бинарное вложение
MapiAttachmentВложение в сообщение
MapiRecipientПолучатель сообщения
MapiPropertyЗапись свойства MAPI
CFBReaderНизкоуровневый читатель контейнера CFB
CFBWriterНизкоуровневый записыватель контейнера CFB
MsgReaderНизкоуровневый читатель структуры MSG
 Русский