Introdução

Analisar mensagens de e-mail programaticamente é um requisito comum para migração de dados, fluxos de trabalho de arquivamento e ferramentas de conformidade. Os arquivos Outlook MSG usam o formato do contêiner Compound File Binary (CFB) com propriedades MAPI para codificar metadados da mensagem, conteúdo do corpo, destinatários e anexos. Trabalhar com esse formato em Python tradicionalmente exigia bibliotecas comerciais ou manipulação binária de baixo nível.

A Comissão aspose-email-foss O pacote fornece uma biblioteca pura em Python, licenciada pelo MIT para ler, criar e converter arquivos do Outlook MSG. Ele expõe um alto nível de segurança no sistema operacional. MapiMessage API para tarefas comuns ao lado de tarefa de nível inferior MsgReader A biblioteca requer Python 3.10 ou posterior e não tem dependências nativas.

Se você precisa extrair a linha de assunto e corpo de um lote de mensagens arquivadas, enumerar anexos para indexação ou converter arquivo MSG ao formato padrão RFC 5322, esta biblioteca lida com o parsing binário para que você possa se concentrar na lógica da sua aplicação.


O que está incluído

Leitura de arquivos MSG com MapiMessage

A Comissão MapiMessage class é o ponto de entrada principal para analisar arquivos Outlook MSG. Abra um arquivo, acesse suas propriedades e feche-o limpo com um gerenciador de contexto.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("meeting-invite.msg") as message:
    print(f"Subject: {message.subject}")
    print(f"Body: {message.body[:200]}")
    print(f"HTML body available: {message.body_html is not None}")

A Comissão from_file método lê o contêiner CFB, analisa os fluxos de propriedade MAPI e preenche atributos tipados. O subject, body, e body_html Propriedades retornar cadeias decodificadas diretamente.

Extrair os destinatários

Cada ficheiro MSG armazena informações do destinatário em armazenamentos MAPI dedicados. MapiMessage.recipients Propriedade retorna uma lista de: MapiRecipient Objetos com campos digitados para o nome de exibição, endereço de e-mail e tipo do destinatário (TO, CC ou BCC).

from aspose.email_foss import msg

with msg.MapiMessage.from_file("team-update.msg") as message:
    for recipient in message.recipients:
        print(
            f"{recipient.display_name} <{recipient.email_address}> "
            f"type={recipient.recipient_type}"
        )

Trabalhar com anexos

A Comissão iter_attachments_info rendimentos do método MapiAttachment Objetos que fornecem o nome de ficheiro, bytes cruos, tipo MIME e Content-ID opcional para imagens em linha.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("report.msg") as message:
    for att in message.iter_attachments_info():
        print(f"  {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
        if att.content_id:
            print(f"    inline content-id: {att.content_id}")

Acesso às propriedades MAPI

Para cenários que exigem valores de propriedade MAPI específicos além dos atributos de conveniência, utilizar: get_property_value com um PropertyId Esta funcionalidade fornece acesso directo a qualquer propriedade armazenada no ficheiro MSG.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("notification.msg") as message:
    sender = message.get_property_value(msg.PropertyId.SENDER_NAME)
    email = message.get_property_value(msg.PropertyId.SENDER_EMAIL_ADDRESS)
    delivery = message.get_property_value(msg.PropertyId.MESSAGE_DELIVERY_TIME)
    print(f"From: {sender} <{email}>")
    print(f"Delivered: {delivery}")

Iterando todas as propriedades

Quando você precisa inspecionar cada propriedade em uma mensagem (para depuração, auditoria ou migração), o iter_properties rendimentos do método MapiProperty Objetos com informações completas sobre etiquetas e valores.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("sample.msg") as message:
    for prop in message.iter_properties():
        print(
            f"tag=0x{prop.property_tag:08X} "
            f"type=0x{prop.property_type:04X} "
            f"value={prop.value!r}"
        )

Conversão de MSG em EML

A Comissão to_email_message método converte um MSG analisado em Python padrão email.message.EmailMessage Objeto. A partir daí você pode serializar a mensagem para o formato RFC 5322 (EML) usando a biblioteca padrão.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("archive.msg") as message:
    email_message = message.to_email_message()
    eml_bytes = email_message.as_bytes()
    with open("archive.eml", "wb") as f:
        f.write(eml_bytes)

Note que a saída EML usa o Python embutido. email Módulo para serialização. A biblioteca lida com a conversão MSG-to-MAPI-To-EmailMessage; a biblioteca padrão lida o formato de fio RFC 5322.


Começo rápido

Instale o pacote do PyPI e analise seu primeiro arquivo MSG em menos de 20 linhas:

# Install: pip install aspose-email-foss>=26.3
from aspose.email_foss import msg

# Create a new message
message = msg.MapiMessage.create(
    "Project status update",
    "Hello team,\n\nPlease review the attached report.\n\nRegards",
)
message.add_recipient("alice@example.com", display_name="Alice")
message.add_attachment("notes.txt", b"meeting notes\n", mime_type="text/plain")
message.save("status-update.msg")

# Read it back and extract data
with msg.MapiMessage.from_file("status-update.msg") as loaded:
    print(f"Subject: {loaded.subject}")
    print(f"Recipients: {len(loaded.recipients)}")
    for att in loaded.iter_attachments_info():
        print(f"Attachment: {att.filename} ({len(att.data)} bytes)")

Formatos suportados

Formatos de imagemExtensãoLeia.Escrever .
Outlook MSG (em inglês).msg- Sim , sim .- Sim , sim .
Arquivo binário composto.cfb- Sim , sim .- Sim , sim .
EML (por conversão).emlSim (através do from_email_message)Sim (através do to_email_message)

O apoio à EML funciona através de conversão: MapiMessage.from_email_message() importações de um Python email.message.EmailMessage objecto, e to_email_message() Não é fornecido o parsing direto de arquivos EML a biblioteca padrão lida com o formato wire EM L.


Open Source & Licenciamento

Aspose.Email FOSS for Python is released under the MIT license. You are free to use, modify, and distribute the library in both commercial and non-commercial projects. The full source code is available on GitHub.

A biblioteca é uma implementação pura de Python sem extensões compiladas ou dependências nativas. Ele funciona em qualquer plataforma que suporte o Python 3.10 ou posterior.


Começar a Fazer

Explore mais recursos para trabalhar com Aspose.Email FOSS for Python: