Como analisar MSG arquivos em Python

Como analisar MSG arquivos em Python

Este guia mostra como carregar e analisar arquivos do Outlook MSG em Python usando: MapiMessage.from_file(), sujeito de acesso, corpo, destinatários e anexos, e inspeccionar a estrutura CFB de baixo nível com o sistema de controlo da qualidade. CFBReader.

Guia passo a passo

Passo 1: Instalar o pacote

Instale o pacote Aspose.Email FOSS a partir do PyPI usando o comando pip abaixo (exige Python 3.10 ou posterior):

pip install aspose-email-foss

Passo 2: Importar a classe MapiMessage

Importação MapiMessage de: aspose.email_foss.msg para aceder à API de carregamento e análise MSG:

from aspose.email_foss.msg import MapiMessage

Passo 3: Carregar um ficheiro MSG

Chama-me . MapiMessage.from_file() com o caminho para um Outlook .msg Arquivo para carregar na memória:

msg = MapiMessage.from_file("message.msg")

Para análise suave de arquivos malformados, passar o opcional strict=False Argumento de palavra-chave para suprimir erros de validação rigorosos:

msg = MapiMessage.from_file("message.msg", strict=False)

Passo 4: Propriedades de mensagem do acesso

Leia o artigo 85.o. subject, body, body_html, e message_class Propriedades para aceder aos metadados e ao conteúdo das mensagens:

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html[:200] if msg.body_html else 'None'}")
print(f"Message Class: {msg.message_class}")

Passo 5: Lista de anexos

Iteração iter_attachments_info() para obter o nome de armazenamento e se cada anexo é uma mensagem incorporada:

for att in msg.iter_attachments_info():
    name = att.storage_name
    is_embedded = att.is_embedded_message
    print(f"Attachment: {name}, embedded={is_embedded}")

Passo 6: Inspecionar a estrutura CFB de baixo nível

Utilização: CFBReader.from_file() para inspecionar a estrutura binária do arquivo MSG e iterar os seus fluxos de diretório:

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"Directory entries: {reader.directory_entry_count}")
for entry in reader.iter_streams():
    print(f"  Stream: {entry}")
reader.close()

Problemas comuns e soluções

CFBError quando a carga é efectuada.

Verifique se o arquivo é um arquivos genuínos do Outlook MSG em formato binário texto simples RFC 5322 Arquivamentos requerem uma etapa de conversão via MapiMessage.from_email_message() Primeiro, vamos.

Corpo é vazio mas HTML corpo tem conteúdo

Algumas mensagens armazenam o conteúdo apenas em HTML. Verifique msg.body_html quando? msg.body Renda de rendimentos None.

Avistamentos de validação

Acessos msg.validation_issues para ver uma tupla de avisos de conformidade para o ficheiro carregado.


Perguntas Frequentes (FAQ)

Posso ler os ficheiros?

Sim, através de uma etapa de conversão. A biblioteca lê diretamente os arquivos binários MSG (CFB). Para carregar uma cadeia EML , primeiro analise-a com o padrão do Python email.message_from_string() e depois passar o resultado para MapiMessage.from_email_message().

O carregamento lê todos os dados de anexo na memória?

Sim, todos os dados do anexo incluindo o conteúdo binário são carregados na memória quando a unidade de armazenamento é executada. MapiMessage.from_file() completa. iter_attachments_info() é um iterador de conveniência sobre a lista de anexos já carregados.

É seguro para fio?

Cada um. MapiMessage As leituras simultâneas de instâncias separadas são seguras.

Ver também:

 Português