Travailler avec les messages en utilisant Microsoft Graph
Aspose.Email for Java fournit un ensemble complet d’API permettant de gérer les messages via Microsoft Graph. Vous pouvez lister, récupérer, créer, mettre à jour, déplacer, copier et supprimer des messages, ainsi que gérer la pagination et les pièces jointes. Les exemples de code ci‑dessous illustrent les opérations les plus courantes.
Lister les messages
Vous pouvez récupérer les messages d’un dossier spécifique, tel que la boîte de réception, et en extraire le contenu complet :
GraphMessageInfoCollection messageInfoColl = client.listMessages(GraphKnownFolders.Inbox);
for (GraphMessageInfo messageInfo : messageInfoColl) {
MapiMessage message = client.fetchMessage(messageInfo.getItemId());
}
Lister les messages par date d’envoi
Pour trier les messages par date d’envoi en ordre croissant, vous pouvez utiliser le OrderBy fonctionnalité de 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);
Récupérer le message
Une fois que vous avez une référence de message, vous pouvez récupérer son contenu complet :
GraphMessageInfo messageInfo = messageInfoColl.get(0);
MapiMessage fetchedMessage = client.fetchMessage(messageInfo.getItemId());
Mettre à jour un message
Après avoir récupéré un message, vous pouvez modifier son contenu et le mettre à jour sur le serveur :
fetchedMessage.setSubject("Update message");
MapiMessage updatedMessage = client.updateMessage(fetchedMessage);
Pagination dans la liste des messages
Lorsque vous travaillez avec de grandes boîtes aux lettres, vous pouvez utiliser la pagination pour récupérer les messages par lots. L’exemple ci‑dessous montre la liste des messages non lus en pages de deux éléments chacune :
// 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());
}
Créer un message
Vous pouvez créer de nouveaux messages avec un sujet, un corps et des propriétés :
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);
Envoyer le message
Vous pouvez envoyer un message directement :
client.send(message);
Ou envoyez un message brouillon après l’avoir créé dans le dossier Brouillons :
MapiMessage draftMessage = client.createMessage(GraphKnownFolders.Drafts, message);
client.send(draftMessage.getItemId());
Copier et déplacer les messages
Les messages peuvent être copiés ou déplacés entre les dossiers :
MapiMessage copiedMessage = client.copyMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());
MapiMessage movedMessage = client.moveMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());
Gérer les pièces jointes
Pour lister et supprimer les pièces jointes d’un message, utilisez l’exemple de code suivant :
MapiAttachmentCollection attachments = client.listAttachments(fetchedMessage.getItemId());
for (MapiAttachment att : attachments) {
client.deleteAttachment(att.getItemId());
}
Supprimer un message
Enfin, vous pouvez supprimer définitivement un message :
client.delete(message.getItemId());