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());