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_issuespara verificar problemas de conformidade do formato MSG - O
strictparâmetro emMapiMessage.from_file()controla a tolerância a erros — defina comoFalsepara análise permissiva - Todos os dados de anexos são carregados na memória durante
from_file()— useatt.datapara 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
| Problema | Causa | Correção |
|---|---|---|
CFBError ao carregar | Não é um arquivo CFB/MSG válido | Verifique se o arquivo é um MSG real do Outlook |
| Corpo vazio após o carregamento | Corpo armazenado apenas em HTML | Verificar msg.body_html em vez de msg.body |
| Destinatários ausentes | MSG não possui armazenamentos de destinatários | Destinatá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étodo | Descrição |
|---|---|
MapiMessage | Representaçã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 |
MapiAttachment | Anexo em uma mensagem |
MapiRecipient | Destinatário em uma mensagem |
MapiProperty | Entrada de propriedade MAPI |
CFBReader | Leitor de contêiner CFB de baixo nível |
CFBWriter | Gravador de contêiner CFB de baixo nível |
MsgReader | Leitor de estrutura MSG de baixo nível |