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 um 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 recebe o nome do arquivo como argumento. Além disso, as Mensagens do Outlook podem ser criadas com um corpo RTF comprimido usando as MapiConversionOptions.

  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 MapiMessage que aceita o objeto do tipo MailMessage. O método fromMailMessage converte o MailMessage em um MapiMessage (MSG).
  3. Chame o método MapiMessage.save para salvar o arquivo MSG.
// Para exemplos completos e arquivos de dados, acesse https://github.com/aspose-email/Aspose.Email-for-Java
// O caminho para o diretório de arquivos.
String dataDir = "outlook/";

// Crie uma instância da classe MailMessage
MailMessage mailMsg = new MailMessage();

// Defina as propriedades de, para, assunto e corpo
mailMsg.setFrom(MailAddress.to_MailAddress("sender@domain.com"));
mailMsg.setTo(MailAddressCollection.to_MailAddressCollection("receiver@domain.com"));
mailMsg.setSubject("Esta é uma mensagem de teste");
mailMsg.setBody("Este é o corpo da mensagem de teste");

// Crie uma instância da classe MapiMessage e passe MailMessage como argumento
MapiMessage outlookMsg = MapiMessage.fromMailMessage(mailMsg);

// Salve a mensagem (arquivo MSG)
String 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 o que você precisa fazer é adicionar os anexos à instância MailMessage. Adicione anexos chamando o método addItem na coleção MailMessage.Attachments.

// Para exemplos completos e arquivos de dados, acesse https://github.com/aspose-email/Aspose.Email-for-Java
// O caminho para o diretório de arquivos.
String dataDir = "outlook/";

String[] files = new String[2];
files[0] = "attachment.doc";
files[1] = "attachment.png";

// Crie uma instância da classe MailMessage
MailMessage mailMsg = new MailMessage();

// Defina as propriedades de, para, assunto e corpo
mailMsg.setFrom(MailAddress.to_MailAddress("sender@domain.com"));
mailMsg.setTo(MailAddressCollection.to_MailAddressCollection("receiver@domain.com"));
mailMsg.setSubject("Esta é uma mensagem de teste");
mailMsg.setBody("Este é o corpo da mensagem de teste");

// Adicione os anexos
for (String strFileName : files)
{
    mailMsg.getAttachments().addItem(new Attachment(strFileName));
}

// Crie uma instância da classe MapiMessage e passe MailMessage como argumento
MapiMessage outlookMsg = MapiMessage.fromMailMessage(mailMsg);
String strMsgFile = "CreateMessagesWithAttachments.msg";
outlookMsg.save(dataDir + strMsgFile);

Criando Arquivos MSG Com Corpo RTF

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

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

// Para exemplos completos e arquivos de dados, acesse https://github.com/aspose-email/Aspose.Email-for-Java
// O caminho para o diretório de arquivos.
String dataDir = "outlook/";

// Crie uma instância da classe MailMessage
MailMessage mailMsg = new MailMessage();

// Defina as propriedades de, para, assunto e corpo
mailMsg.setFrom(MailAddress.to_MailAddress("sender@domain.com"));
mailMsg.setTo(MailAddressCollection.to_MailAddressCollection("receiver@domain.com"));
mailMsg.setSubject("Esta é uma mensagem de teste");
mailMsg.setHtmlBody("<h3>exemplo rtf</h3><p>criando um <b><u>arquivo de mensagem do outlook (msg)</u></b> usando Aspose.Email.</p>");

MapiMessage outlookMsg = MapiMessage.fromMailMessage(mailMsg);
outlookMsg.save(dataDir + "CreatingMSGFilesWithRTFBody_out.msg");

Salvando Mensagem em Status de Rascunho

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

// Para exemplos completos e arquivos de dados, acesse https://github.com/aspose-email/Aspose.Email-for-Java
// O caminho para o diretório de arquivos.
String dataDir = "outlook/";

// Altere as propriedades de um arquivo MSG existente
String strExistingMsg = "message.msg";

// Carregue o arquivo existente em MailMessage e altere as propriedades
MailMessage msg = MailMessage.load(dataDir + strExistingMsg, new MsgLoadOptions());
msg.setSubject(msg.getSubject() + " NOVO ASSUNTO (atualizado por Aspose.Email)");
msg.setHtmlBody(msg.getHtmlBody() + " NOVO CORPO (atualizado por Aspose.Email)");

// Crie uma instância do tipo MapiMessage a partir de MailMessage, configure a flag da mensagem para não enviada (status de rascunho) e salve
MapiMessage mapiMsg = MapiMessage.fromMailMessage(msg);
mapiMsg.setMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapiMsg.save(dataDir + "SavingMessageInDraftStatus_out.msg");

Implicações da Compressão de Corpo

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

// Para exemplos completos e arquivos de dados, acesse https://github.com/aspose-email/Aspose.Email-for-Java
String fileName = "outlook/test.msg";

MailMessage message = MailMessage.load(fileName);
MapiConversionOptions options = new MapiConversionOptions();
options.setUseBodyCompression(true);
MapiMessage ae_mapi = MapiMessage.fromMailMessage(message, options);