Загрузка, просмотр и парсинг MSG файла

Эта тема объясняет, как загрузить файл сообщения Microsoft Outlook (*.msg). Класс MapiMessage используется для загрузки MSG файлов и предоставляет несколько статических функций загрузки для различных сценариев. Следующий код демонстрирует, как загрузить MSG файлы из файла или из потока.

Загрузка MSG файлов

Следующий код демонстрирует, как загрузить MSG файлы.

from aspose.email.mapi import MapiMessage

# Создайте экземпляр MapiMessage из файла
msg = MapiMessage.from_file("message.msg")

# Получить тему
print("Subject: " + msg.subject)

# Получить адрес отправителя
print("From: " + msg.sender_email_address)

# Получить тело сообщения
print("Body: " + msg.body)

# Получить информацию о получателях
recipients = ", ".join([r.email_address for r in msg.recipients])
print("Recipients: " + recipients)

# Получить вложения
for att in msg.attachments:
    print(att.file_name)
    print(att.display_name)

Загрузка из потока

Следующий код демонстрирует, как загрузить файл из потока.

from aspose.email.mapi import MapiMessage
import io

# Прочитать файл в массив байтов
file_path = dir_path + "message.msg"
with open(file_path, "rb") as file:
    bytes_data = file.read()

# Создать поток памяти из массива байтов
stream = io.BytesIO(bytes_data)
stream.seek(0)

# Создать экземпляр MapiMessage из потока
msg = MapiMessage.from_stream(stream)

# Получить тему
print("Subject: " + msg.subject)

# Получить адрес отправителя
print("From: " + msg.sender_email_address)

# Получить тело сообщения
print("Body: " + msg.body)

Конвертация EML в MSG с сохранением встроенного формата EML

EML файлы могут быть загружены в класс MapiMessage путем создания объекта MailMessage и передачи его в метод MapiMessage.from_mail_message. Если файл EML содержит встроенные EML файлы, используйте MapiConversionOptions.PreserveEmbeddedMessageFormat для сохранения формата встроенных EML файлов. Приведенный ниже код демонстрирует, как загрузить EML файлы в MapiMessage, сохраняя формат встроенных EML файлов.

from aspose.email import MailMessage, EmlLoadOptions
from aspose.email.mapi import MapiMessage, MapiConversionOptions, OutlookMessageFormat

eml_file = dir_path + "message.eml"

# Загрузить EML файл
eml_options = EmlLoadOptions()
eml = MailMessage.load(eml_file, eml_options)

# Создать MapiConversionOptions
conversion_options = MapiConversionOptions()
conversion_options.format = OutlookMessageFormat.UNICODE

# Сохранить встроенный формат сообщения
conversion_options.preserve_embedded_message_format = True

# Конвертировать EML в MSG с опциями
msg = MapiMessage.from_mail_message(eml, conversion_options)