Recursos e Funcionalidades

Recursos e Funcionalidades

Esta página cobre todas as principais funcionalidades de aspose-email-foss 26.3 com exemplos funcionais de Python.


Lendo arquivos MSG

Carregue um arquivo MSG e acesse suas propriedades principais:

from aspose.email_foss.msg import MapiMessage

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

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html}")
print(f"Message Class: {msg.message_class}")

Criando arquivos MSG

Crie uma nova mensagem do zero:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")

Defina o assunto e o corpo em uma mensagem existente:

msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")

Destinatários

Adicione destinatários com nomes de exibição e tipos:

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Hello", "Message body")
msg.add_recipient("alice@example.com", display_name="Alice Smith")
msg.add_recipient("bob@example.com", display_name="Bob Jones", recipient_type=RECIPIENT_TYPE_CC)
msg.save("with_recipients.msg")

Anexos

Adicione anexos de arquivos binários:

with open("report.pdf", "rb") as f:
    data = f.read()

msg.add_attachment("report.pdf", data, mime_type="application/pdf")
msg.save("with_attachment.msg")

Incorpore uma mensagem MSG como um anexo aninhado:

inner = MapiMessage.create("Inner Subject", "Inner body")
msg.add_embedded_message_attachment(inner, filename="embedded.msg", mime_type="application/vnd.ms-outlook")
msg.save("with_embedded.msg")

Propriedades MAPI

Leia e escreva propriedades MAPI por ID da propriedade:

from aspose.email_foss.msg import PropertyId

# Read a property
subject = msg.get_property(PropertyId.SUBJECT)

# Set a property
msg.set_property(PropertyId.SUBJECT, "New Subject")

Itere todas as propriedades:

for prop in msg.iter_properties():
    print(f"Tag: {prop.property_tag:#010x}")

Conversão de Email

Converta entre os formatos MSG (MAPI) e email (RFC 5322):

# MSG to email string
email_str = msg.to_email_string()
print(email_str[:500])

# MSG to EmailMessage object
email_msg = msg.to_email_message()

# EmailMessage back to MapiMessage
msg2 = MapiMessage.from_email_message(email_msg)
msg2.save("roundtrip.msg")

Operações de CFB de Baixo Nível

Leia a estrutura do contêiner CFB diretamente:

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"File size: {reader.file_size} bytes")
print(f"Sectors: {reader.fat_sector_count}")
print(f"Entries: {reader.directory_entry_count}")

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

for entry in reader.iter_streams():
    print(f"Stream: {entry}")

reader.close()

Escreva documentos CFB:

from aspose.email_foss.msg import MsgWriter

data = msg.to_bytes()
with open("output.msg", "wb") as f:
    f.write(data)

Dicas e Melhores Práticas

  • Sempre chame msg.close() ou use um gerenciador de contexto ao terminar a leitura para liberar os manipuladores de arquivo
  • Use msg.validation_issues para verificar problemas de conformidade do formato MSG
  • O strict parâmetro em MapiMessage.from_file() controla a tolerância a erros — defina como False para análise permissiva
  • Todos os dados de anexos são carregados na memória durante from_file() — use att.data para acessar bytes diretamente; iter_attachments_info() é um iterador de conveniência sobre a lista de anexos já populada
  • Use to_email_string() para visualizações rápidas de texto sem a construção completa do objeto de e‑mail

Problemas Comuns

ProblemaCausaCorreção
CFBError ao carregarNão é um arquivo CFB/MSG válidoVerifique se o arquivo é um MSG real do Outlook
Corpo vazio após o carregamentoCorpo armazenado apenas em HTMLVerificar msg.body_html em vez de msg.body
Destinatários ausentesMSG não possui armazenamentos de destinatáriosDestinatários são opcionais no formato MSG; verifique iter_attachments_info()

FAQ

Quais versões do formato MSG são suportadas?

A biblioteca lê e grava arquivos MSG no formato CFB v3 e v4, compatível com o Microsoft Outlook.

Posso ler arquivos EML?

Não diretamente. A biblioteca lida com o formato MSG. Use MapiMessage.from_email_message() para converter a partir do RFC 5322 EmailMessage objetos.

O suporte a thread-safety está disponível?

Cada MapiMessage e CFBReader a instância é independente. O acesso concorrente a instâncias separadas a partir de threads distintas é seguro.


Resumo da Referência da API

Classe / MétodoDescrição
MapiMessageRepresentação de mensagem MSG de alto nível
MapiMessage.from_file()Carregar um arquivo MSG
MapiMessage.create()Criar uma nova mensagem MSG
MapiMessage.save()Salvar em arquivo MSG
MapiMessage.to_email_message()Converter para EmailMessage (RFC 5322)
MapiMessage.from_email_message()Converter de EmailMessage para MSG
MapiMessage.add_recipient()Adicionar um destinatário
MapiMessage.add_attachment()Adicionar um anexo binário
MapiAttachmentAnexo em uma mensagem
MapiRecipientDestinatário em uma mensagem
MapiPropertyEntrada de propriedade MAPI
CFBReaderLeitor de contêiner CFB de baixo nível
CFBWriterGravador de contêiner CFB de baixo nível
MsgReaderLeitor de estrutura MSG de baixo nível
 Português