Como criar arquivos MSG em Python

Como criar arquivos MSG em Python

Este guia mostra como criar arquivos do Outlook MSG a partir do zero em Python usando MapiMessage.create(), adicionar destinatários e anexos, e salvar o resultado sem a necessidade do Microsoft Office.

Guia passo a passo

Passo 1: Instalar o pacote

Instale o pacote Aspose.Email FOSS a partir do PyPI usando o comando pip abaixo:

pip install aspose-email-foss

Passo 2: Criar uma mensagem

Chama-me . MapiMessage.create() com uma sequência de assunto e texto do corpo para instanciar um novo objeto de mensagem:

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Meeting Notes", "Please review the attached notes.")

Passo 3: Adicionar destinatários

Chama-me . add_recipient() com um endereço de e-mail, nome opcional para exibição e constante do tipo destinatário (RECIPIENT_TYPE_TO, RECIPIENT_TYPE_CC, ou RECIPIENT_TYPE_BCC):

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)

Use as constantes de inteiro. RECIPIENT_TYPE_TO (1):, RECIPIENT_TYPE_CC (2) ou RECIPIENT_TYPE_BCC (3) de aspose.email_foss.msg.


Passo 4: Adicionar anexos

Chama-me . add_attachment() com o nome do ficheiro, conteúdos de ficheiros binários e tipo MIME para anexar um ficheirode mensagem:

with open("notes.pdf", "rb") as f:
    msg.add_attachment("notes.pdf", f.read(), mime_type="application/pdf")

Para incorporar outro MSG como um anexo aninhado, use add_embedded_message_attachment():

inner = MapiMessage.create("Forwarded", "Original message body")
msg.add_embedded_message_attachment(inner, filename="forwarded.msg", mime_type="application/vnd.ms-outlook")

Passo 5: Salvar o arquivo MSG

Chama-me . msg.save() com um caminho de arquivo para escrever a mensagem no disco como uma .msg Arquivo:

msg.save("output.msg")

Para obter os bytes serializados para uso em memória ou streaming sem escrever um arquivo, ligue to_bytes() Em vez disso:

data = msg.to_bytes()

Problemas comuns e soluções

Destinatários vazios no ficheiro guardado

Certifica-te de ligar . add_recipient() antes de save().Os destinatários são escritos durante a serialização.

Anexo não exibido no Outlook

Verifique se o tipo MIME é correto. Use "application/octet-stream" como um recurso de reserva para tipos de ficheiro desconhecidos.


Perguntas Frequentes (FAQ)

Posso definir o corpo HTML?

Sim, usa. msg.body_html = "value" para definir o corpo HTML após a criação.

Posso converter o formato MSG para EML?

Sim, liga. msg.to_email_string() Para obter a representação 5322.

Tamanho máximo da mensagem?

Não há limite de duração. CFB v3 suporta arquivos até 2 GB; v4 suporta maiores arquivos.

Ver também:

 Português