Analisi dei file di messaggi Outlook

Aspose.Email per Java fornisce il MapiMessage classe utilizzata per aprire e analizzare un file MSG. Poiché possono esserci molti destinatari in un file MSG, il MapiMessage la classe espone il getRecipients() metodo che restituisce un MapiRecipientCollection che rappresenta una collezione di MapiRecipient oggetti. Il MapiRecipient l’oggetto espone inoltre metodi per lavorare con gli attributi dei destinatari.

La seguente sequenza di passaggi serve a questo scopo:

  1. Crea un’istanza di MapiMessage classe per caricare un file MSG dal Load metodo statico.
  2. Visualizza il nome del mittente, l’oggetto e il corpo dal file MSG utilizzando getSenderName(), getSubject() e getBody() metodi.
  3. Chiama il getRecipients() metodo esposto da MapiRecipient classe per ottenere un riferimento alla collezione di MapiRecipient oggetti associati al file MSG.
  4. Itera attraverso il MapiRecipientCollection collezione per visualizzare i contenuti per ciascuno MapiRecipient oggetto tramite i suoi metodi pubblici.
// 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());
}

Ottieni un tipo di elemento di un messaggio MAPI

Aspose.Email offre un MapiItemType enum che rappresenta un tipo di elemento. Può essere utilizzato per la conversione del messaggio in un oggetto di una classe corrispondente derivata da IMapiMessageItem interfaccia. Questo evita che gli utenti debbano controllare il valore della proprietà MessageClass prima della conversione del messaggio.

Il seguente esempio di codice dimostra come iterare attraverso i messaggi in una cartella e convertire ogni messaggio MAPI in un tipo di elemento MAPI corrispondente, a seconda del tipo del messaggio:

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;
    }
}