Introdução

Aspose.Email FOSS for Python agora está disponível no PyPI: uma biblioteca gratuita, licenciada sob MIT, para criar, ler e converter arquivos Outlook .msg totalmente em Python, sem dependência do Microsoft Office ou de qualquer extensão nativa. Instale‑a com pip install aspose-email-foss>=26.3 e comece a trabalhar com contêineres MSG e CFB imediatamente.

A biblioteca tem como alvo Python 3.10 e versões posteriores. Ela implementa o formato Compound File Binary (CFB) e o formato de mensagem MSG do zero, proporcionando controle determinístico sobre como as mensagens de e‑mail são serializadas e lidas. Como a implementação é pura em Python, ela funciona de forma idêntica no Windows, macOS, Linux e em ambientes conteinerizados.

Aspose.Email FOSS foi projetado para desenvolvedores que constroem pipelines de processamento de e‑mail, ferramentas de arquivamento de conformidade, fluxos de trabalho de análise forense ou qualquer aplicação que precise criar ou inspecionar arquivos de mensagem compatíveis com Outlook sem a necessidade de um Exchange ou Outlook em execução.


Principais recursos

Criar arquivos MSG

Crie arquivos .msg compatíveis com Outlook do zero usando MapiMessage.create(). Defina propriedades padrão do MAPI como assunto, remetente, horário de entrega e campos de exibição através do enum PropertyId. Adicione destinatários com add_recipient() e anexos de arquivo com add_attachment(), então salve o resultado no disco.

from aspose.email_foss import msg

message = msg.MapiMessage.create(
    "Quarterly status update and rollout plan",
    "Hello team,\n\nPlease find the latest rollout summary attached.\n\nRegards,\nEngineering",
)

message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "build.agent@example.com")
message.set_property(msg.PropertyId.INTERNET_MESSAGE_ID, "<example-001@example.com>")

message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient("bob@example.com", display_name="Bob Example")
message.add_recipient(
    "carol@example.com",
    display_name="Carol Example",
    recipient_type=msg.RECIPIENT_TYPE_CC,
)

message.add_attachment("hello.txt", b"sample attachment\n", mime_type="text/plain")
message.save("example-message.msg")

Ler e Converter MSG para EML

Carregue um arquivo .msg existente com MapiMessage.from_file() e converta‑o em um objeto padrão Python EmailMessage via to_email_message(). A partir daí, serialize para bytes EML para armazenamento ou encaminhamento via SMTP.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("example-message.msg") as loaded:
    email_message = loaded.to_email_message()
    eml_bytes = email_message.as_bytes()

with open("example-message.eml", "wb") as f:
    f.write(eml_bytes)

Inspecionar Internos do MSG

Use MsgReader e seu subjacente CFBReader para inspecionar a estrutura binária de um arquivo MSG. Acesse os metadados CFB (versão, tamanho do setor, contagem de entradas de diretório) e itere sobre as entradas de propriedades MAPI ao nível binário.

from aspose.email_foss import msg

reader = msg.MsgReader.from_file("example-message.msg")
cfb = reader.cfb_reader

print(f"CFB major_version={cfb.major_version}")
print(f"sector_size={cfb.sector_size}")
print(f"directory_entries={cfb.directory_entry_count}")

for entry in reader.iter_top_level_fixed_length_properties():
    tag = entry.property_tag
    print(f"tag=0x{tag:08X} flags=0x{entry.flags:08X} value={entry.value.hex()}")

reader.close()

Acesso de Baixo Nível ao CFB

Leia e percorra qualquer contêiner Compound File Binary usando CFBReader. Enumere storages e streams, resolva caminhos por nome e extraia raw stream data para processamento personalizado.

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("example-message.msg")

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

for entry in reader.iter_streams():
    data = reader.get_stream_data(entry.stream_id)
    print(f"Stream: {entry.name} size={len(data)}")

reader.close()

Início rápido

Instale a biblioteca e crie seu primeiro arquivo MSG em menos de dez linhas:

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

message = msg.MapiMessage.create("Hello from Python", "This is a test message.")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "sender@example.com")
message.add_recipient("recipient@example.com", display_name="Recipient")
message.save("hello.msg")

with msg.MapiMessage.from_file("hello.msg") as loaded:
    eml = loaded.to_email_message()
    print(eml["Subject"])

Formatos suportados

FormatoImportarExportar
MSGSimSim
CFBSimSim

Código Aberto e Licenciamento

Aspose.Email FOSS for Python é lançado sob a MIT License. Você pode usá‑lo em projetos pessoais, internos e comerciais sem restrição. O código‑fonte está disponível no GitHub.


Começando