Arbeiten mit Nachrichten mittels Microsoft Graph

Aspose.Email for Java bietet einen umfangreichen Satz von APIs zur Verwaltung von Nachrichten über Microsoft Graph. Sie können Nachrichten auflisten, abrufen, erstellen, aktualisieren, verschieben, kopieren und löschen sowie Seitennavigation und Anhänge handhaben. Die unten stehenden Codebeispiele zeigen die gebräuchlichsten Vorgänge.

Nachrichten auflisten

Sie können Nachrichten aus einem bestimmten Ordner, z.B. Posteingang, abrufen und deren gesamten Inhalt holen:

GraphMessageInfoCollection messageInfoColl = client.listMessages(GraphKnownFolders.Inbox);
for (GraphMessageInfo messageInfo : messageInfoColl) {
    MapiMessage message = client.fetchMessage(messageInfo.getItemId());
}

Nachrichten nach Versanddatum auflisten

Um Nachrichten nach Versanddatum aufsteigend zu sortieren, können Sie das OrderBy Feature von GraphQueryBuilder:

// create orderby messages query 'ASC'
GraphQueryBuilder builder = new GraphQueryBuilder();
builder.getSentDate().orderBy(true);
MailQuery query = builder.getQuery();

GraphMessagePageInfo pageInfo = client.listMessages(GraphKnownFolders.Inbox, new PageInfo(10), query);

Nachricht abrufen

Sobald Sie eine Nachrichtenreferenz haben, können Sie ihren gesamten Inhalt abrufen:

GraphMessageInfo messageInfo = messageInfoColl.get(0);
MapiMessage fetchedMessage = client.fetchMessage(messageInfo.getItemId());

Nachricht aktualisieren

Nachdem Sie eine Nachricht abgerufen haben, können Sie ihren Inhalt ändern und auf dem Server aktualisieren:

fetchedMessage.setSubject("Update message");
MapiMessage updatedMessage = client.updateMessage(fetchedMessage);

Seitennavigation bei Nachrichtenlisten

Bei der Arbeit mit großen Postfächern können Sie die Seitennavigation verwenden, um Nachrichten in Stücke zu holen. Das folgende Beispiel zeigt das Auflisten ungelesener Nachrichten in Seiten zu je zwei Elementen:

// send ping test messages
for (int i = 0; i < 5; i++) {
    MailMessage eml = new MailMessage(user.EMail, user.EMail, "ping" + i, "test body");
    client.send(MapiMessage.fromMailMessage(eml));
}
// waiting for inbox
Thread.sleep(10000);

// paging option
int itemsPerPage = 2;
// create unread messages filter
GraphQueryBuilder builder = new GraphQueryBuilder();
builder.isRead().equals(false);
MailQuery query = builder.getQuery();

// list messages
GraphMessagePageInfo pageInfo = client.listMessages(GraphKnownFolders.Inbox, new PageInfo(itemsPerPage), query);
GraphMessageInfoCollection messages = pageInfo.getItems();
while (!pageInfo.getLastPage())
{
    pageInfo = client.listMessages(GraphKnownFolders.Inbox, pageInfo.getNextPage(), query);
    // add next page items to common collection
    messages.addRange(pageInfo.getItems());
}

// set messages state as read
for (GraphMessageInfo message : messages) {
    client.setRead(message.getItemId());
}

Nachricht erstellen

Sie können neue Nachrichten mit Betreff, Inhalt und Eigenschaften erstellen:

MapiMessage message = new MapiMessage();
message.setSubject("Subject");
message.setBody("Body");
message.setProperty(KnownPropertyList.DISPLAY_TO, "to@host.com");
message.setProperty(KnownPropertyList.SENDER_NAME, "from");
message.setProperty(KnownPropertyList.SENT_REPRESENTING_EMAIL_ADDRESS, "from@host.com");

MapiMessage createdMessage = client.createMessage(GraphKnownFolders.Inbox, message);

Nachricht senden

Sie können eine Nachricht direkt senden:

client.send(message);

Oder senden Sie eine Entwurfsnachricht, nachdem Sie sie im Entwurfsordner erstellt haben:

MapiMessage draftMessage = client.createMessage(GraphKnownFolders.Drafts, message);
client.send(draftMessage.getItemId());

Nachrichten kopieren und verschieben

Nachrichten können zwischen Ordnern kopiert oder verschoben werden:

MapiMessage copiedMessage = client.copyMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());
MapiMessage movedMessage = client.moveMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());

Anhänge verwalten

Um Anhänge einer Nachricht aufzulisten und zu entfernen, verwenden Sie das folgende Codebeispiel:

MapiAttachmentCollection attachments = client.listAttachments(fetchedMessage.getItemId());
for (MapiAttachment att : attachments) {
    client.deleteAttachment(att.getItemId());
}

Nachricht löschen

Abschließend können Sie eine Nachricht dauerhaft löschen:

client.delete(message.getItemId());