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.
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 !