Análisis de Archivos de Mensajes de Outlook

Aspose.Email para Java proporciona el MapiMessage clase que se utiliza para abrir y analizar un archivo MSG. Dado que puede haber muchos destinatarios en un archivo MSG, el MapiMessage La clase expone el getRecipients() método que devuelve un MapiRecipientCollection que representa una colección de MapiRecipient objetos. El MapiRecipient el objeto también expone métodos para trabajar con atributos de destinatario.

La siguiente secuencia de pasos cumple este propósito:

  1. Cree una instancia de la MapiMessage clase para cargar un archivo MSG desde el Load método estático.
  2. Mostrar el nombre del remitente, asunto y cuerpo del archivo MSG usando getSenderName(), getSubject() y getBody() métodos.
  3. Llame al getRecipients() método expuesto por el MapiRecipient clase para obtener una referencia a la colección de MapiRecipient objetos asociados con el archivo MSG.
  4. Iterar a través del MapiRecipientCollection colección para mostrar el contenido de cada MapiRecipient objeto a través de sus métodos públicos.
// The path to the resource directory.
String dataDir = Utils.getSharedDataDir(ParsingOutlookMessageFiles.class) + "outlook/";

//Instantiate an MSG file to load an MSG file from disk
MapiMessage outlookMessageFile = MapiMessage.fromFile(dataDir + "message.msg");
//Display sender's name
System.out.println("Sender Name : " + outlookMessageFile.getSenderName());
//Display Subject
System.out.println("Subject : " + outlookMessageFile.getSubject());
//Display Body
System.out.println("Body : " + outlookMessageFile.getBody());
//Display Recipient's info
System.out.println("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
for (int i = 0; i < outlookMessageFile.getRecipients().size(); i++) {
	//Set a reference to the MapiRecipient object
	MapiRecipient rcp = (MapiRecipient) outlookMessageFile.getRecipients().get_Item(i);
	//Display recipient email address
	System.out.println("Email : " + rcp.getEmailAddress());
	//Display recipient name
	System.out.println("Name : " + rcp.getDisplayName());
	//Display recipient type
	System.out.println("Recipient Type : " + rcp.getRecipientType());
}

Obtener un tipo de elemento de un mensaje MAPI

Aspose.Email ofrece un MapiItemType enumeración que representa un tipo de elemento. Puede usarse para la conversión de mensajes en un objeto de una clase correspondiente derivada de la IMapiMessageItem interfaz. Esto evita que los usuarios verifiquen el valor de la propiedad MessageClass antes de la conversión del mensaje.

El siguiente ejemplo de código muestra cómo iterar a través de los mensajes en una carpeta y convertir cada mensaje MAPI a un tipo de elemento MAPI correspondiente, dependiendo del tipo del mensaje:

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

    switch (msg.getSupportedType()) {
        // Non-supported type. MapiMessage cannot be converted to an appropriate item type.
        // Just use in MSG format.
        case MapiItemType.None:
            break;
        // An email message. Conversion isn't required.
        case MapiItemType.Message:
            break;
        // A contact item. Can be converted to MapiContact.
        case MapiItemType.Contact:
            MapiContact contact = (MapiContact) msg.toMapiMessageItem();
            break;
        // A calendar item. Can be converted to MapiCalendar.
        case MapiItemType.Calendar:
            MapiCalendar calendar = (MapiCalendar) msg.toMapiMessageItem();
            break;
        // A distribution list. Can be converted to MapiDistributionList.
        case MapiItemType.DistList:
            MapiDistributionList dl = (MapiDistributionList) msg.toMapiMessageItem();
            break;
        // A Journal entry. Can be converted to MapiJournal.
        case MapiItemType.Journal:
            MapiJournal journal = (MapiJournal) msg.toMapiMessageItem();
            break;
        // A StickyNote. Can be converted to MapiNote.
        case MapiItemType.Note:
            MapiNote note = (MapiNote) msg.toMapiMessageItem();
            break;
        // A Task item. Can be converted to MapiTask.
        case MapiItemType.Task:
            MapiTask task = (MapiTask) msg.toMapiMessageItem();
            break;
    }
}