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
| Formato | Importar | Exportar |
|---|---|---|
| MSG | Sim | Sim |
| CFB | Sim | Sim |
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.