Parsen von Outlook‑Nachrichtendateien

Aspose.Email für Java bietet die MapiMessage Klasse, die zum Öffnen und Parsen einer MSG‑Datei verwendet wird. Da es in einer MSG‑Datei viele Empfänger geben kann, die MapiMessage Klasse stellt das getRecipients() Methode, die ein(e) … zurückgibt MapiRecipientCollection die eine Sammlung von MapiRecipient Objekte. Die MapiRecipient Objekt bietet weitere Methoden zum Arbeiten mit Empfänger‑Attributen.

Die folgende Schrittfolge dient diesem Zweck:

  1. Erstellen Sie eine Instanz von dem MapiMessage Klasse, um eine MSG‑Datei von dem Load statische Methode.
  2. Den Absendernamen, Betreff und Body aus der MSG‑Datei anzeigen mit getSenderName(), getSubject() und getBody() Methoden.
  3. Rufen Sie die getRecipients() Methode, die von MapiRecipient Klasse, um eine Referenz auf die Sammlung von MapiRecipient Objekten, die mit der MSG‑Datei verknüpft sind.
  4. Durchlaufen Sie die MapiRecipientCollection Sammlung, um Inhalte für jeden MapiRecipient Objekt über seine öffentlichen Methoden.
// 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());
}

Erhalten Sie einen Elementtyp einer MAPI-Nachricht

Aspose.Email bietet ein MapiItemType Enum, das einen Elementtyp darstellt. Es kann für die Nachrichtenkonvertierung in ein Objekt einer entsprechenden Klasse verwendet werden, die von der IMapiMessageItem Schnittstelle. Dies verhindert, dass Benutzer den Wert der MessageClass‑Eigenschaft vor der Nachrichtenkonvertierung überprüfen.

Das folgende Codebeispiel zeigt, wie man durch die Nachrichten in einem Ordner iteriert und jede MAPI-Nachricht in einen entsprechenden MAPI-Elementtyp konvertiert, abhängig vom Typ der Nachricht:

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