Como começar a usar o FOSS para Python
aspose-email-foss Python é uma biblioteca gratuita e licenciada pelo MIT para criar, ler e conversão de arquivos do Outlook MSG e contêineres CFB — não é necessário o Microsoft Office, não há nativo Extensões, Python puro de PyPI.
Guia Passo a Passo
Etapa 1: Instalar o Pacote
Problemas de Memória e Desempenho:
pip install aspose-email-fossVerifique se a instalação está carregada corretamente:
from aspose.email_foss.msg import MapiMessage
print("aspose-email-foss is ready.")Passo 2: Importar as classes necessárias
Importe os módulos necessários para a criação de mensagens, atribuição de propriedades e conversão de formato:
from datetime import datetime, timezone
from aspose.email_foss import msg
from aspose.email_foss.msg import MapiMessage, PropertyIdPasso 3: Crie um arquivo de
Usar MapiMessage.create() para criar uma mensagem com um assunto e corpo. Defina metadados do remetente com PropertyId Constantes, adicione os destinatários e anexe um arquivo.
message = MapiMessage.create("Getting Started", "Hello from aspose-email-foss!")
message.set_property(PropertyId.SENDER_NAME, "Build Agent")
message.set_property(PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")
message.set_property(
PropertyId.MESSAGE_DELIVERY_TIME,
datetime(2026, 1, 1, 9, 0, tzinfo=timezone.utc),
)
message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_attachment("notes.txt", b"Meeting notes go here.\n", mime_type="text/plain")
message.save("getting-started.msg")
print("getting-started.msg written.")Passo 4: Leia o arquivo MSG de volta
Carregar o arquivo salvo usando MapiMessage.from_file() como um gestor de contexto. acessar o subject e body propriedades diretamente do objeto devolvido.
with MapiMessage.from_file("getting-started.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body : {message.body}")Passo 5: Converta o MSG para EML
to_email_bytes() Converta a mensagem carregada para o formato RFC 5322. Escreva o resultado para a .eml arquivo com a biblioteca padrão.
from pathlib import Path
with MapiMessage.from_file("getting-started.msg") as message:
Path("getting-started.eml").write_bytes(message.to_email_bytes())
print("getting-started.eml written.")Problemas Comuns e Soluções
ModuleNotFoundError: No module named 'aspose' O pacote não está instalado no ambiente Python ativo. pip install aspose-email-foss no mesmo ambiente virtual que você está usando para executar seu script. pip show aspose-email-foss.
FileNotFoundError Quando chamar MapiMessage.from_file() O caminho que você passou não existe ou usa o separador errado para seu sistema operacional. pathlib.Path Para construir caminhos portáteis: MapiMessage.from_file(Path("folder") / "file.msg").
MSG arquivo abre no Outlook, mas não mostra o assunto MapiMessage.create() aceita o assunto como primeiro argumento posicional. se você passou por Uma cadeia vazia, o Outlook exibe a mensagem como não-título. explicitamente com set_property(PropertyId.SUBJECT, "My Subject").
EML conversão produz um corpo vazio to_email_bytes() Usar body_html Se forem colocados e cair de volta para body.Confirme que em pelo menos uma dessas propriedades não está vazia após o carregamento do MSG com from_file().
O conteúdo do Unicode nos destinatários ou no assunto é truncado Passagem unicode_strings=True São MapiMessage.create() Para garantir que as propriedades de string sejam O sistema é armazenado em Unicode (PT_UNICODE) e não ANSI (pt_STRING8).
Perguntas Frequentes
O Microsoft Office é necessário?
A biblioteca é totalmente autônoma.Lê e escreve os formatos binários MSG e CFB nativamente em Python sem qualquer dependência do Microsoft Office, da automação COM ou das APIs Win32.
Posso usar esta biblioteca no Linux ou macOS?
Sim sim . aspose-email-foss É Python puro e funciona em qualquer plataforma que suporte a Python 3.10 ou posterior, incluindo Windows, macOS, Linux, contêineres Docker e funções sem servidor.
A biblioteca é gratuita para uso comercial?
É liberado sob a Licença MIT. Você pode usá-lo, modificar e redistribuí-la para qualquer finalidade, incluindo aplicações comerciais, sem royalties ou requisitos de atribuição além do texto da licença.
Como posso adicionar os receptores CC e BCC?
Passagem recipient_type=msg.RECIPIENT_TYPE_CC ou msg.RECIPIENT_TYPE_BCC Como o terceiro Argumento do add_recipient():
message.add_recipient("bob@example.com", display_name="Bob", recipient_type=msg.RECIPIENT_TYPE_CC)Como posso colocar um em outro?
Usar MapiMessage.add_embedded_message_attachment(),Passando pelo interior MapiMessage O primeiro argumento como objecto:
inner = MapiMessage.create("Inner message", "Embedded body.")
outer = MapiMessage.create("Outer message", "See attachment.")
outer.add_embedded_message_attachment(inner, "inner.msg")
outer.save("outer.msg")