Arbeta med meddelanden med Microsoft Graph
Aspose.Email for Java tillhandahåller ett omfattande API‑set för att hantera meddelanden via Microsoft Graph. Du kan lista, hämta, skapa, uppdatera, flytta, kopiera och radera meddelanden, samt hantera sidindelning och bilagor. Kodexemplen nedan är exempel på de vanligaste operationerna.
Lista meddelanden
Du kan hämta meddelanden från en specifik mapp, som Inkorgen, och hämta deras fullständiga innehåll:
GraphMessageInfoCollection messageInfoColl = client.listMessages(GraphKnownFolders.Inbox);
for (GraphMessageInfo messageInfo : messageInfoColl) {
MapiMessage message = client.fetchMessage(messageInfo.getItemId());
}
Lista meddelanden efter skickat datum
För att sortera meddelanden efter skickat datum i stigande ordning kan du använda OrderBy funktion av 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);
Hämta meddelande
När du har en meddelandereferens kan du hämta dess fullständiga innehåll:
GraphMessageInfo messageInfo = messageInfoColl.get(0);
MapiMessage fetchedMessage = client.fetchMessage(messageInfo.getItemId());
Uppdatera ett meddelande
Efter att ha hämtat ett meddelande kan du ändra dess innehåll och uppdatera det på servern:
fetchedMessage.setSubject("Update message");
MapiMessage updatedMessage = client.updateMessage(fetchedMessage);
Sidindelning i meddelandelistor
När du arbetar med stora brevlådor kan du använda sidindelning för att hämta meddelanden i delar. Exemplet nedan visar hur man listar olästa meddelanden i sidor med två objekt vardera:
// 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());
}
Skapa ett meddelande
Du kan skapa nya meddelanden med ämne, brödtext och egenskaper:
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);
Skicka meddelande
Du kan skicka ett meddelande direkt:
client.send(message);
Eller skicka ett utkastmeddelande efter att ha skapat det i mappen Utkast:
MapiMessage draftMessage = client.createMessage(GraphKnownFolders.Drafts, message);
client.send(draftMessage.getItemId());
Kopiera och flytta meddelanden
Meddelanden kan kopieras eller flyttas mellan mappar:
MapiMessage copiedMessage = client.copyMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());
MapiMessage movedMessage = client.moveMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());
Hantera bilagor
För att lista och ta bort bilagor från ett meddelande, använd följande kodexempel:
MapiAttachmentCollection attachments = client.listAttachments(fetchedMessage.getItemId());
for (MapiAttachment att : attachments) {
client.deleteAttachment(att.getItemId());
}
Ta bort ett meddelande
Slutligen kan du ta bort ett meddelande permanent:
client.delete(message.getItemId());