Microsoft 365 : Recevoir des courriels avec l’API Microsoft Graph

Traduit automatiquement de Deepl

Pour accéder aux données de Microsoft 365 comme les emails, Microsoft déprécie l’authentification de base pour IMAP et POP3 et promeut de plus en plus l’API Graph.

4D v19 R3 a apporté le composant 4D Netkit pour gérer la connexion OAuth 2.0 et l’envoi des emails via l’API Graph.

Dans la v19 R8, nous ajoutons de nouvelles commandes pour recevoir les emails et lister les dossiers de votre boîte aux lettres.

HDI Office365 Get Mails

Connexion au compte

Avant de commencer, nous allons créer l’objet de connexion OAuth2 et l’objet Office 365.

var $oAuth2: cs.NetKit.OAuth2Provider
var $office365 : cs.NetKit.Office365

$oAuth2:=cs.NetKit.OAuth2Provider.new($param)
$office365:=cs.NetKit.Office365.new($oAuth2;\
 New object("mailType"; "Microsoft"))

Dossiers de messagerie

Vous pouvez obtenir la collection de dossiers de messagerie directement sous le dossier racine en utilisant la fonction .getFolderList() :

$folderList:=$office365.mail.getFolderList()
// Collection with all the mail folder directly under the root folder
$folders:=$folderList.folders

Vous obtenez une collection qui contient, pour chaque dossier, des informations utiles comme le nom du dossier, l’id, le nombre d’emails, etc :

Si vous avez des dossiers avec des dossiers enfants, vous devez appeler la fonction .getFolderList() en utilisant l’id du dossier comme paramètre pour avoir les détails des dossiers :

$childrenList:=$office365.mail.getFolderList($folders[8].id)

Télécharger les emails

Vous pouvez récupérer les emails de votre boîte aux lettres en utilisant la fonction .getMails(). Par exemple, si vous voulez récupérer tous les mails présents dans le dossier Inbox :

$param:=New object
$param.folderId:=$folder[1].id  // inbox folder

$mails:=$office365.mail.getMails($param)

Lorsque le dossier sélectionné est un dossier créé par défaut pour les utilisateurs, au lieu d’utiliser la valeur de l’identifiant du dossier correspondant, vous pouvez, par commodité, utiliser les noms de dossiers bien connus (archive, drafts, inbox, junkemail, sentitems, etc… ). Vous pouvez donc écrire l’exemple ci-dessous :

$param:=New object 
$param.folderId:="inbox"

$mails:=$office365.mail.getMails($param)

Si vous avez juste besoin de télécharger un email spécifique, vous pouvez utiliser la fonction .getMail() et lui passer l’id de l’email :

$mail:=$office.mail.getMail($mailId)

Vérifiez cette fonctionnalité avec le HDI ci-dessus et la documentation pour plus de détails !

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.