Criando e Salvando Arquivos MSG

Aspose.Email suporta a criação de arquivos de mensagem do Outlook (MSG). Este artigo explica como:

  • Criar mensagens MSG.
  • Criar mensagens MSG com anexos.
  • Criar uma mensagem MSG com corpo RTF.
  • Salvar uma mensagem como rascunho.
  • Trabalhar com compressão de corpo.

Criando e Salvando Mensagens do Outlook

A classe MailMessage possui o método Save() que pode salvar arquivos MSG do Outlook no disco ou em um stream. Os trechos de código abaixo criam uma instância da classe MailMessage, definem propriedades como de, para, assunto e corpo. O método Save() aceita o nome do arquivo como um argumento. Além disso, as mensagens do Outlook podem ser criadas com um corpo RTF comprimido usando o MapiConversionOptions. Para configurar, crie um novo aplicativo Windows e adicione uma referência à dll Aspose.Email ao projeto.

  1. Crie uma nova instância da classe MailMessage e defina as propriedades From, To, Subject e Body.
  2. Chame o método FromMailMessage da classe MailMessage, que aceita um objeto do tipo MailMessage. O método FromMailMessage() converte o MailMessage em um MailMessage (MSG).
  3. Chame o método MapiMessage.Save() para salvar o arquivo MSG.

Escreva o seguinte código no evento de clique do controle de botão do aplicativo Windows.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
# Set from, to, subject and body properties
eml.from_address = "sender@domain.com";
eml.to.append("receiver@domain.com");
eml.subject = "This is test message";
eml.body = "This is test body";
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml);
# Save the message (MSG) file
strMsgFile = "CreatingAndSavingOutlookMessages_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Criando Arquivos MSG Com Anexos

No exemplo acima, criamos um arquivo MSG simples. Aspose.Email também suporta salvar arquivos de mensagem com anexos. Tudo que você precisa fazer é adicionar os anexos à instância MailMessage. Adicione anexos chamando o método Add() na coleção MailMessage.Attachments. Adicione uma listbox ao formulário criado acima e adicione dois botões, um para adicionar e outro para remover anexos. A aplicação que adiciona anexos funciona assim:

  1. Quando o botão Add Attachment é clicado, um Diálogo de Abertura de Arquivo é exibido para ajudar os usuários a navegar e selecionar o anexo.
  2. Quando um arquivo é selecionado, o caminho completo é adicionado a uma lista.
  3. Quando o arquivo MSG é criado, os caminhos dos anexos são retirados da lista e adicionados à coleção MailMessage.Attachments.

Escreva o seguinte código no evento de clique do botão Add Attachment.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
# Set from, to, subject and body properties
eml.from_address = "sender@domain.com";
eml.to.append("receiver@domain.com");
eml.subject = "This is test message";
eml.body = "This is test body";
#Add attachments to MailMessage
eml.add_attachment(Attachment(dataDir + "1.jpg"))
eml.add_attachment(Attachment(dataDir + "1.doc"))
eml.add_attachment(Attachment(dataDir + "1.pdf"))
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml);
# Save the message (MSG) file
strMsgFile = "AddingMSGAttachments_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Adicione o código para adicionar os anexos à instância MailMessage. O código final para a função Write Msg é escrito como abaixo.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
# Set from, to, subject and body properties
eml.from_address = "sender@domain.com";
eml.to.append("receiver@domain.com");
eml.subject = "This is test message";
eml.body = "This is test body";
#Add attachments to MailMessage
eml.add_attachment(Attachment(dataDir + "1.jpg"))
eml.add_attachment(Attachment(dataDir + "1.doc"))
eml.add_attachment(Attachment(dataDir + "1.pdf"))
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml);
# Save the message (MSG) file
strMsgFile = "AddingMSGAttachments_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Criando Arquivos MSG Com Corpo RTF

Você também pode criar arquivos de Mensagem do Outlook (MSG) com corpos de texto rico (RTF) com Aspose.Email. O corpo RTF suporta formatação de texto. Crie um definindo a propriedade MailMessage.HtmlBody. Ao converter uma instância MailMessage em uma instância MailMessage, o corpo HTML é convertido em RTF. Dessa forma, a formatação do corpo do e-mail é preservada.

O seguinte exemplo cria um arquivo MSG com um corpo RTF. Há um cabeçalho, formatação em negrito e sublinhado aplicadas no corpo HTML. Essa formatação é mantida quando o HTML é convertido em RTF.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
eml.is_draft = True
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml)
# Set RTF Body
outlookMsg.body_rtf = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Calibri;}}\r\n{\\*\\generator Msftedit 5.41.21.2510;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang9\\f0\\fs22 This is RTF Body with this \\b bold \\b0 text.\\par\r\n}\r\n\0"
# Save the message (MSG) file
strMsgFile = "CreatingMSGFilesWithRtfBody_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Salvando Mensagem em Status de Rascunho

Os e-mails são salvos como rascunhos quando alguém começa a editá-los, mas quer retornar a eles para completá-los mais tarde. Aspose.Email suporta salvar mensagens de e-mail em status de rascunho definindo uma flag de mensagem. Abaixo está o código de exemplo para salvar uma mensagem de e-mail do Outlook (MSG) como um rascunho.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
# Create an instance of the MapiMessage class
outlookMsg = MapiMessage()
# Set Message Body
outlookMsg.body = "Message created with MapiMessage in draft mode."
#Set the Unsent flag
outlookMsg.set_message_flags(MapiMessageFlags.UNSENT)
# Save the message (MSG) file
strMsgFile = "SavingMessageInDraftStatus_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Implicações da Compressão de Corpo

O método de compressão de corpo RTF pode ser usado para gerar um arquivo MSG de menor tamanho. No entanto, isso resulta em uma velocidade mais lenta. Para criar mensagens com velocidade melhorada, defina a flag como falsa. Essa flag, por sua vez, afeta os PSTs criados: arquivos MSG menores resultam em PSTs menores, e grandes arquivos MSG resultam em criação de PST mais lenta.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage.load("CreatingAndSavingOutlookMessages_out.msg");
options = MapiConversionOptions()
options.use_body_compression = True
ae_mapi = MapiMessage.from_mail_message(eml, options);