Microsoft 365 : Envoyer des courriels

Traduit automatiquement de Deepl

Nous connaissons l’importance de l’envoi d’e-mails, et le fait qu’il s’agit d’une tâche courante dans les applications d’aujourd’hui. De nombreuses personnes travaillant avec Office 365 nous ont demandé une API pour envoyer des e-mails via l’API Microsoft Graph. La fonctionnalité OAuth 2.0 était une condition préalable à la connexion au serveur Microsoft et à l’introduction de commandes permettant de récupérer les informations sur les utilisateurs. Nous sommes heureux de procéder à la gestion des emails, en commençant par la commande d’envoi d’email.

HDI Office365 Send Mail

Connexion au compte

Avant de créer l’email, 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"))

PRÉPARER un email

Vous devez d’abord créer votre objet email. 4D supporte maintenant le type de ressource de message de Microsoft Graph. Les exemples de code dans ce billet et l’IDH sont réalisés avec ce nouvel objet. Mais bien sûr, vous pouvez utiliser un objet mail avec un format JMAP si vous préférez.

Commençons par spécifier l’auteur de l’email. L’auteur doit être l’adresse email de l’utilisateur connecté, nous utilisons donc $office365.user.getCurrent() pour remplir cet attribut automatiquement :

$email:=New object
$email.from:=New object
$email.from.emailAddress:=New object
$email.from.emailAddress.address:=$office365.user.getCurrent().userPrincipalName

Si vous souhaitez spécifier une adresse de réponse différente de l’adresse.

Puis les destinataires (en utilisant des syntaxes différentes) :

$addressTo:=New object
$addressTo.emailAddress:=New object
$addressTo.emailAddress.email:="address1@mail.com"

$addressCC:=New object
$addressCC.emailAddress:=New object
$addressCC.emailAddress.email:="address2@mail.com"
$addressCC.emailAddress.name:="Stephen"

// Originating addresses
$email.toRecipients:=new collection($addressTo)
// Carbon Copy
$email.ccRecipients:=new collection($addressCC)

Ensuite, ajoutons un sujet :

$email.subject:="Hello world"

Et le corps … Vous pouvez spécifier deux types, un texte :

$email.body:=New object
$email.body.content:="Test content mail"
$email.body.contentType:="text"

ou HTML :

$email.body:=New object
$email.body.content:="<html><body><h1>Test content mail </h1></body></html>"
$email.body.contentType:="html"

Vous pouvez ajouter des informations supplémentaires à votre email comme :

  • une demande d’accusé de réception :
$email.isDeliveryReceiptRequested:=True
  • une demande d’accusé de réception de lecture :
$email.isReadReceiptRequested:=True
  • une importance « faible », « normale » ou « importante » :
$email.importance:="high"

et d’autres que vous trouverez dans la documentation!

Créer une pièce jointe

Pour ajouter une pièce jointe, vous devez créer un objet pièce jointe :

var $attachmentText : Text
$attachmentText:="Simple text attachement content"

var $attachment : Object
BASE64 ENCODE($attachmentText)
$attachment:=New object
$attachment["@odata.type"]:="#microsoft.graph.fileAttachment"
$attachment.contentId:=Generate UUID
$attachment.isInline:=False
$attachment.name:="attachment.txt"
$attachment.contentType:="text/plain"
$attachment.contentBytes:=$attachmentText
$attachment.size:=Length($attachmentText)

Et l’ajouter à votre email comme ceci :

$email.attachments:=New collection($attachment)

Envoyer l’email

Maintenant que l’email est prêt, nous pouvons l’envoyer en utilisant la fonction mail.send() de l’objet $office365 que nous avons créé auparavant :

$status:=$office365.mail.send($email)

Et voilà, votre email est envoyé !

Découvrez cette fonctionnalité en action avec l’IDH 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.