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 imagem | Extensão | Leia. | Escrever . |
|---|---|---|---|
| Outlook MSG (em inglês) | .msg | - Sim , sim . | - Sim , sim . |
| Arquivo binário composto | .cfb | - Sim , sim . | - Sim , sim . |
| EML (por conversão) | .eml | Sim (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:
- Guia de Desenvolvedores documentação completa com tutoriais e guias de API
- Base de conhecimento artigos de orientação e perguntas frequentes
- Referência API referência completa de classe e método