Análise de Arquivos de Mensagens do Outlook

Aspose.Email para Java fornece a classe MapiMessage que é usada para abrir e analisar um arquivo MSG. Como pode haver muitos destinatários em um arquivo MSG, a classe MapiMessage expõe o método getRecipients() que retorna uma MapiRecipientCollection que representa uma coleção de objetos MapiRecipient. O objeto MapiRecipient também expõe métodos para trabalhar com atributos de destinatários.

A seguinte sequência de etapas serve a esse propósito:

  1. Crie uma instância da classe MapiMessage para carregar um arquivo MSG do método estático Load.
  2. Exiba o nome do remetente, o assunto e o corpo do arquivo MSG usando os métodos getSenderName(), getSubject() e getBody() .
  3. Chame o método getRecipients() exposto pela classe MapiRecipient para obter uma referência à coleção de objetos MapiRecipient associados ao arquivo MSG.
  4. Percorra a coleção MapiRecipientCollection para exibir o conteúdo de cada objeto MapiRecipient por meio de seus métodos públicos.
// O caminho para o diretório de recursos.
String dataDir = Utils.getSharedDataDir(ParsingOutlookMessageFiles.class) + "outlook/";

//Instanciar um arquivo MSG para carregar um arquivo MSG do disco
MapiMessage outlookMessageFile = MapiMessage.fromFile(dataDir + "message.msg");
//Exibir nome do remetente
System.out.println("Nome do Remetente : " + outlookMessageFile.getSenderName());
//Exibir Assunto
System.out.println("Assunto : " + outlookMessageFile.getSubject());
//Exibir Corpo
System.out.println("Corpo : " + outlookMessageFile.getBody());
//Exibir informações do Destinatário
System.out.println("Destinatários : \n");

//Percorrer a coleção de destinatários associada ao objeto MapiMessage
for (int i = 0; i < outlookMessageFile.getRecipients().size(); i++) {
	//Definir uma referência ao objeto MapiRecipient
	MapiRecipient rcp = (MapiRecipient) outlookMessageFile.getRecipients().get_Item(i);
	//Exibir endereço de email do destinatário
	System.out.println("Email : " + rcp.getEmailAddress());
	//Exibir nome do destinatário
	System.out.println("Nome : " + rcp.getDisplayName());
	//Exibir tipo do destinatário
	System.out.println("Tipo do Destinatário : " + rcp.getRecipientType());
}

Obtenha um Tipo de Item de uma Mensagem MAPI

Aspose.Email oferece um enum MapiItemType que representa um tipo de item. Ele pode ser usado para conversão de mensagens em um objeto da classe correspondente derivada da interface IMapiMessageItem. Isso evita que os usuários verifiquem o valor da propriedade MessageClass antes da conversão da mensagem.

O seguinte exemplo de código demonstra como iterar pelas mensagens em uma pasta e converter cada mensagem MAPI em um tipo de item MAPI correspondente, dependendo do tipo da mensagem:

for (MessageInfo messageInfo : folder.enumerateMessages()) {
    MapiMessage msg = pst.extractMessage(messageInfo);

    switch (msg.getSupportedType()) {
        // Tipo não suportado. MapiMessage não pode ser convertido em um tipo de item apropriado.
        // Apenas use no formato MSG.
        case MapiItemType.None:
            break;
        // Uma mensagem de e-mail. A conversão não é necessária.
        case MapiItemType.Message:
            break;
        // Um item de contato. Pode ser convertido em MapiContact.
        case MapiItemType.Contact:
            MapiContact contact = (MapiContact) msg.toMapiMessageItem();
            break;
        // Um item de calendário. Pode ser convertido em MapiCalendar.
        case MapiItemType.Calendar:
            MapiCalendar calendar = (MapiCalendar) msg.toMapiMessageItem();
            break;
        // Uma lista de distribuição. Pode ser convertida em MapiDistributionList.
        case MapiItemType.DistList:
            MapiDistributionList dl = (MapiDistributionList) msg.toMapiMessageItem();
            break;
        // Uma entrada de diário. Pode ser convertida em MapiJournal.
        case MapiItemType.Journal:
            MapiJournal journal = (MapiJournal) msg.toMapiMessageItem();
            break;
        // Um StickyNote. Pode ser convertido em MapiNote.
        case MapiItemType.Note:
            MapiNote note = (MapiNote) msg.toMapiMessageItem();
            break;
        // Um item de Tarefa. Pode ser convertido em MapiTask.
        case MapiItemType.Task:
            MapiTask task = (MapiTask) msg.toMapiMessageItem();
            break;
    }
}