Aller au contenu
Cercle IA Tech · Intégration Un site du réseau Cercle IA Tech

Guide

Microsoft Graph : donner les mails Outlook à une IA

Permissions déléguées ou d'application, Mail.ReadBasic, restriction à certaines boîtes par RBAC Exchange, notifications : une IA face aux mails Outlook.

Mis à jour le

Pour qu'une IA lise les mails Outlook d'une organisation Microsoft 365, on passe par Microsoft Graph, l'API unique de Microsoft 365. Deux modèles d'accès existent : délégué (l'application agit pour une personne connectée, avec ses droits) ou d'application (l'application agit seule, sans personne connectée, par exemple pour traiter une boîte partagée la nuit). Le second est puissant : par défaut, il ouvre toutes les boîtes de l'organisation. Exchange Online permet de le restreindre. Voici comment, d'après la documentation Microsoft lue le 15/11/2026.

L'angle utilisateur (« quels droits je donne en connectant ma boîte à une IA ») est traité sur NL-Q Mails. Ici, on se place du côté de celui qui construit l'intégration.

Choisir la permission la plus étroite

Pour lister les messages d'une boîte (GET /me/messages ou GET /users/{id}/messages), la documentation donne :

Type de permission La moins large Plus larges
Déléguée (compte professionnel) Mail.ReadBasic Mail.ReadWrite, Mail.Read
D'application Mail.ReadBasic.All Mail.ReadWrite, Mail.Read

Mail.ReadBasic exclut le corps du message, son aperçu, les pièces jointes et les propriétés étendues. C'est suffisant pour une IA qui trie ou route les mails à partir de l'expéditeur et de l'objet. Dès qu'elle doit résumer ou répondre, il faut Mail.Read. Écrire ou déplacer demande Mail.ReadWrite ; envoyer, Mail.Send.

Une application peut lire la boîte d'une autre personne dans deux cas seulement : si elle a des permissions d'application, ou si elle a des permissions déléguées et que l'autre personne a partagé un dossier ou donné une délégation à l'utilisateur connecté.

Restreindre une application à certaines boîtes

C'est le réglage que l'on oublie. Une permission d'application Mail.Read accordée dans Microsoft Entra ID vaut pour toutes les boîtes. Exchange Online propose RBAC for Applications (contrôle d'accès par rôles pour les applications), qui remplace les anciennes Application Access Policies.

Le principe :

  1. Définir une étendue : une management scope (un filtre sur les propriétés des boîtes) ou une unité administrative de Microsoft Entra.
  2. Créer dans Exchange un pointeur vers le principal de service de l'application (New-ServicePrincipal), avec les identifiants de la page « Enterprise applications » et non ceux de « App registrations ».
  3. Assigner un rôle d'application sur cette étendue (New-ManagementRoleAssignment -Role "Application Mail.Read").
  4. Vérifier avec Test-ServicePrincipalAuthorization, qui indique si une boîte donnée est dans l'étendue.

Trois mises en garde de la documentation :

  • Les droits s'additionnent. Si l'application garde un Mail.Read sans restriction dans Microsoft Entra ID, l'étendue Exchange ne restreint rien. Il faut retirer la permission accordée côté Entra.
  • Le cache. Un changement de droits met de 30 minutes à 2 heures à s'appliquer selon l'activité de l'application (la commande de test, elle, contourne ce cache).
  • Qui peut le faire. Il faut être membre du groupe de rôles Organization Management, ou avoir le rôle Exchange Administrator dans Microsoft Entra ID.

Parmi les rôles disponibles : Application Mail.ReadBasic (sans le corps), Application Mail.Read, Application Mail.ReadWrite (sans l'envoi), Application Mail.Send.

Lire efficacement

  • La taille de page par défaut est de 10 messages ; $top va de 1 à 1 000.
  • Utilisez $select pour ne demander que les champs utiles : une grande page de messages complets peut provoquer une erreur 504 (délai dépassé).
  • Pour la page suivante, réutilisez telle quelle l'adresse @odata.nextLink, sans manipuler $skip.
  • Le corps arrive en HTML. L'en-tête Prefer: outlook.body-content-type="text" le demande en texte, plus simple à donner à un modèle.

Être prévenu plutôt que relire

Interroger la boîte en boucle expose à la limitation de débit : Graph répond alors 429 Too Many Requests avec un en-tête Retry-After, à respecter avant de réessayer. Microsoft recommande plutôt les notifications de changement :

Paramètre (messages Outlook) Valeur documentée
Durée maximale d'un abonnement 10 080 minutes (un peu moins de sept jours)
Avec les données du message dans la notification 1 440 minutes (un peu moins d'un jour)
Abonnements actifs par boîte, toutes applications 1 000 au plus
Latence moyenne / maximale Moins d'une minute / 3 minutes

La réception de ces notifications obéit à des règles strictes (réponse en moins de 3 secondes, valeur secrète clientState à vérifier) : elles sont détaillées sur la page webhook et IA, et le renouvellement des abonnements sur mise en production.

Le montage conseillé pour une PME

Prenons, à titre d'illustration, une boîte partagée « contact@ » qu'une IA doit trier :

  1. Une application avec la permission d'application Mail.Read, sans consentement global dans Entra.
  2. Un rôle Application Mail.Read dans Exchange, restreint par une management scope à cette seule boîte.
  3. Un abonnement aux nouveaux messages du dossier Boîte de réception, renouvelé chaque jour.
  4. Une file d'attente entre la notification et l'appel au modèle.
  5. L'écriture (déplacer, répondre) ajoutée plus tard, avec validation humaine.

Vous êtes sous Google Workspace ? Voir Gmail API : les scopes.

Questions fréquentes

Quelle permission Graph donne le moins de droits pour lister des mails ?

Mail.ReadBasic (Mail.ReadBasic.All en permission d'application). Elle donne accès aux messages sans le corps, l'aperçu du corps, les pièces jointes ni les propriétés étendues. Mail.Read et Mail.ReadWrite sont plus larges.

Comment limiter une application Graph à quelques boîtes aux lettres ?

Avec RBAC for Applications dans Exchange Online : un rôle d'application, par exemple « Application Mail.Read », assigné avec une étendue (management scope ou unité administrative). Il faut aussi retirer la permission accordée à toute l'organisation dans Microsoft Entra ID, sinon la restriction n'a aucun effet.

Combien de temps dure un abonnement aux notifications sur les mails ?

Au plus 10 080 minutes, un peu moins de sept jours, pour les messages Outlook ; 1 440 minutes si la notification inclut les données du message. Il faut le renouveler avant expiration.

Sources

Pages consultées pour écrire cet article :

  1. https://learn.microsoft.com/en-us/graph/api/user-list-messages?view=graph-rest-1.0
  2. https://learn.microsoft.com/en-us/exchange/permissions-exo/application-rbac
  3. https://learn.microsoft.com/en-us/graph/change-notifications-overview
  4. https://learn.microsoft.com/en-us/graph/throttling

À lire aussi