Gerenciando Arquivos de Mensagem com Aspose.Email.Outlook

Convertendo MSG para mensagem MIME

A API Aspose.Email oferece a capacidade de converter arquivos MSG em mensagens MIME usando o toMailMessage método.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiMessage msg = new MapiMessage(
                            "sender@test.com",
                            "recipient1@test.com; recipient2@test.com",
                            "Test Subject",
                            "This is a body of message.");
MailConversionOptions options = new MailConversionOptions();
options.setConvertAsTnef(true);
MailMessage mail = msg.toMailMessage(options);

Convertendo MSG para EML preservando o corpo RTF

A API fornece os seguintes métodos para preservar o corpo RTF ao converter MSG para EML:

Os exemplos de código a seguir demonstram como manter o corpo rtf no MailMessage:

MsgLoadOptions options = new MsgLoadOptions();
options.setPreserveRtfContent(true);
MailMessage message = MailMessage.load("fileName", options);
MapiMessage mapi = MapiMessage.load("fileName");
MailConversionOptions options = new MailConversionOptions();
options.setPreserveRtfContent(true);
MailMessage message = mapi.toMailMessage(options);

Convertendo MSG para MHTML preservando o cabeçalho de categoria

A API Aspose.Email fornece a capacidade de adicionar um cabeçalho de categoria ao converter a mensagem para MHTML. Esse recurso é especificado por MhtSaveOptions classe como opção adicional ao salvar MailMessage no formato Mhtml.

O exemplo de código a seguir demonstra como criar um arquivo MHT (MHTML) a partir de um objeto MapiMessage, personalizar a formatação e os cabeçalhos do arquivo MHT usando MhtSaveOptions, definir categorias para a mensagem de e‑mail e, em seguida, modificar os modelos de formato e os cabeçalhos de renderização do arquivo MHT antes de salvá‑lo.

 MapiMessage msg = new MapiMessage("from@aaa.com", "to@aaa.com", "subj", "body");

msg.setCategories(new String[] { "Urgently", "Important" });

MhtSaveOptions saveOptions = new MhtSaveOptions();

saveOptions.getFormatTemplates().set_Item(MhtTemplateName.CATEGORIES,

    saveOptions.getFormatTemplates().get_Item(MhtTemplateName.CATEGORIES).replace("Categories", "Les catégories"));

saveOptions.getRenderingHeaders().add(MhtTemplateName.CATEGORIES);

msg.save("fileName.mhtml", saveOptions);

Leitura e gravação de arquivo de modelo Outlook (.OFT)

Os modelos Outlook são muito úteis quando você deseja enviar uma mensagem de e‑mail semelhante repetidamente. Em vez de preparar a mensagem do zero a cada vez, primeiro prepare a mensagem no Outlook e salve‑a como um Modelo Outlook (OFT). Depois, sempre que precisar enviar a mensagem, você pode criá‑la a partir do modelo, economizando tempo na escrita do mesmo texto no corpo ou na linha de assunto, definindo formatação e assim por diante. Aspose.Email MailMessage classe pode ser usada para carregar e ler um arquivo de modelo Outlook (OFT). Uma vez que o modelo Outlook é carregado em uma instância da MailMessage classe, você pode atualizar o remetente, destinatário, corpo, assunto e outras propriedades. Após atualizar as propriedades:

  • Enviar o e‑mail usando o SmtpClient classe ou
  • Salvar a mensagem como MSG e fazer atualizações/validações adicionais usando o Microsoft Outlook.

Nos exemplos de código abaixo, nós:

  1. Carregue o modelo usando o MailMessage classe.
  2. Atualizar algumas das propriedades.
  3. Salvar a mensagem no formato MSG.

O snippet de código a seguir mostra como carregar o arquivo OFT, atualizar a mensagem e salvá‑la no formato MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

// Load the Outlook template (OFT) file in MailMessage's instance
MailMessage message = MailMessage.load(dataDir + "sample.oft", new MsgLoadOptions());

// Set the sender and recipients information
String senderDisplayName = "John";
String senderEmailAddress = "john@abc.com";
String recipientDisplayName = "William";
String recipientEmailAddress = "william@xzy.com";

message.setSender(new MailAddress(senderEmailAddress, senderDisplayName));
message.getTo().addMailAddress(new MailAddress(recipientEmailAddress, recipientDisplayName));
message.setHtmlBody(message.getHtmlBody().replace("DisplayName", "<b>" + recipientDisplayName + "</b>"));

// Set the name, location and time in email body
String meetingLocation = "<u>" + "Hall 1, Convention Center, New York, USA" + "</u>";
String meetingTime = "<u>" + "Monday, June 28, 2010" + "</u>";
message.setHtmlBody(message.getHtmlBody().replace("MeetingPlace", meetingLocation));
message.setHtmlBody(message.getHtmlBody().replace("MeetingTime", meetingTime));

// Save the message in MSG format and open in Office Outlook
MapiMessage mapimessage = MapiMessage.fromMailMessage(message);
mapimessage.setMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapimessage.save(dataDir + "ReadAndWritingOutlookTemplateFile_out.msg");

Salvando arquivo Outlook MSG como modelo

O snippet de código a seguir mostra como salvar o arquivo Outlook MSG como um modelo.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

try (MapiMessage mapi = new MapiMessage("test@from.to", "test@to.to", "template subject", "Template body")) {
    mapi.saveAsTemplate(dataDir + "mapiToOft.msg");
}

Definindo categoria de cor para arquivos Outlook MSG

Uma categoria de cor marca uma mensagem de e‑mail para algum tipo de importância ou classificação. O Microsoft Outlook permite que os usuários atribuam categorias de cor para diferenciar e‑mails. Para manipular a categoria de cor, use o FollowUpManager. Contém funções como addCategory, removeCategory, clearCategories e getCategories.

  • addCategory recebe MapiMessage e a string da categoria de cor, por exemplo, "Categoria Roxa" ou "Categoria Vermelha" como argumentos.
  • removeCategory recebe MapiMessage e a string da categoria de cor a ser removida da mensagem.
  • clearCategories é usado para remover todas as categorias de cor da mensagem.
  • getCategories é usado para recuperar todas as categorias de cor de uma mensagem específica.

O exemplo a seguir executa as tarefas descritas abaixo:

  1. Adicionar uma categoria de cor.
  2. Adicionar outra categoria de cor.
  3. Recuperar a lista de todas as categorias.
  4. Remover todas as categorias.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");

// Add Two category
FollowUpManager.addCategory(msg, "Purple Category");
FollowUpManager.addCategory(msg, "Red Category");

// Retrieve the list of available categories
IList categories = FollowUpManager.getCategories(msg);

// Remove the specified category and then Clear all categories
FollowUpManager.removeCategory(msg, "Red Category");
FollowUpManager.clearCategories(msg);

Acessando informações de acompanhamento de arquivo MSG

A API Aspose.Email oferece a capacidade de acessar as informações de acompanhamento de uma mensagem enviada ou recebida. Ela pode recuperar as informações de Recibo de Leitura, Recibo de Entrega e resultados de votação de um arquivo de mensagem.

Recuperando informações de recibos de leitura e entrega

O snippet de código a seguir mostra como recuperar informações de recibo de leitura e de entrega.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");
for (MapiRecipient recipient : msg.getRecipients()) {
    System.out.println("Recipient: " + recipient.getDisplayName());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY property
    System.out.println("Delivery time: " + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY).getDateTime());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_READ property
    System.out.println("Read time" + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_READ).getDateTime());
}

Criando Mensagens de Encaminhamento e Resposta

Aspose.Email API oferece a capacidade de criar e formatar mensagens de encaminhamento e resposta. O ReplyMessageBuilder e ForwardMessageBuilder as classes da API são usadas para criar as mensagens Reply e Forward, respectivamente. Uma mensagem Reply ou Forward pode ser especificada para ser criada usando qualquer um dos modos de OriginalMessageAdditionMode enum. Este enum tem os seguintes valores:

  • OriginalMessageAdditionMode.None - A mensagem original não é incluída na mensagem de resposta.
  • OriginalMessageAdditionMode.Attachment - A mensagem original é incluída como anexo na mensagem de resposta
  • OriginalMessageAdditionMode.Textpart - A mensagem original é incluída como texto no corpo da mensagem de resposta

Criando Mensagem de Resposta

O trecho de código a seguir mostra como criar uma mensagem de resposta.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ReplyMessageBuilder builder = new ReplyMessageBuilder();

// Set ReplyMessageBuilder Properties
builder.setReplyAll(true);
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
builder.setResponseText(
        "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>");

MapiMessage replyMsg = builder.buildResponse(originalMsg);
replyMsg.save(dataDir + "reply_out.msg");

Criando uma Mensagem Encaminhada

O trecho de código a seguir mostra como criar uma mensagem encaminhada.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ForwardMessageBuilder builder = new ForwardMessageBuilder();
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
MapiMessage forwardMsg = builder.buildResponse(originalMsg);
forwardMsg.save(dataDir + "forward_out.msg");

Preservar Datas Vazias ao Converter uma Mensagem

MapiConversionOptions.setPreserveEmptyDates(boolean) propriedade que indica se é necessário manter datas vazias ao converter uma mensagem. Esta API aparece no Aspose.Email 21.5. O trecho de código a seguir mostra como preservar datas vazias.

MailMessage mailMessage = MailMessage.load("message.eml");
System.out.println(mailMessage.getDate()); // zero date
MapiConversionOptions mco = MapiConversionOptions.getUnicodeFormat();
// keep empty dates when converting a message
mco.setPreserveEmptyDates(true);
MapiMessage mapiMessage = MapiMessage.fromMailMessage(mailMessage, mco);
System.out.println(mapiMessage.getClientSubmitTime()); // zero date
// check zero date
if (mapiMessage.getClientSubmitTime().equals(JavaHelper.ZERO_DATE))
    System.out.println("ZERO DATE");