Email

Programmation de la livraison d’emails avec Mailgun et Node.js

Écrit par Timothy Voice, développeur de logiciels basé à Brooklyn et passionné de MEAN.JS. Cet article a été initialement publié sur son blog.
Image pour Programmation de la livraison d’emails avec Mailgun et Node.js

Ceci est une version mise à jour de l’article « Programmation de la livraison d’emails avec Mailgun et Node.js » écrit par Timothy Voice, développeur de logiciels basé à Brooklyn et passionné de MEAN.JS. L’article original a été publié pour la première fois sur son blog.

En général, la plupart d’entre nous n’aiment pas ce qui est méchant (sauf s’il s’agit de Mean Girls, peut-être). Cependant, il y a quelques éléments « mean » qui peuvent s’avérer très utiles. L’un d’eux est l’application MEAN (MongoDB, Express.js, AngularJS et Node.js), qui vous permet de créer des sites web et des applications mobiles. Vous voulez en savoir plus ? Commençons.

Qu’est-ce que la livraison programmée d’emails ?

La livraison programmée d’emails est une invention assez récente, mais elle s’est rapidement imposée dans le domaine des messages par email. Elle est courante chez la plupart des grands fournisseurs d’accès à Internet tels que Microsoft Outlook, Gmail et Yahoo, et vous permet de retarder la livraison de vos messages à une date ultérieure. Lorsque vous rédigez un message, vous pouvez souhaiter qu’il soit livré à une heure précise plutôt que d’être envoyé immédiatement. La programmation d’emails vous permet de conserver vos messages dans votre boîte d’envoi jusqu’à ce que vous souhaitiez les envoyer. C’est simple, n’est-ce pas ?

Pourquoi programmer l’envoi d’emails pour plus tard ?

Les gens envoient des emails pour diverses raisons (faites-nous confiance, nous en savons quelque chose). Parfois, si des collègues collaborent sur différents fuseaux horaires, ils peuvent souhaiter retarder la livraison jusqu’à ce que le destinataire ait commencé sa journée de travail afin que l’email soit traité en priorité. D’autres fois, les gens peuvent vouloir différer la livraison lorsqu’ils ont des idées ou des tâches sur lesquelles ils souhaitent revenir plus tard. La possibilité de retarder l’envoi pendant un certain temps leur permet de se rappeler ce qu’ils souhaitent accomplir avec un nouvel email. 

Bien sûr, la livraison programmée d’emails ne se fait pas toute seule. Alors, où MEAN intervient-il ?

Pourquoi MEAN est-il important pour la livraison programmée d’emails ?

En matière de fonctionnalités, la fantastique application MEAN que vous avez créée peut vous aider à envoyer un email transactionnel pour le support de votre service global, comme les confirmations par email, les mots de passe oubliés, les notifications, etc. Cela inclut, bien sûr, les options de livraison d’emails.. Il existe une catégorie d’applications où l’email est le service, comme les applications météo, la livraison de newsletters, etc., et c’est là qu’intervient la livraison programmée d’emails. Pour ces services, notre application doit envoyer automatiquement des emails aux utilisateurs à des heures précises et sous certaines conditions. En combinant d’excellents modules npm et en se connectant à un service d’emailing, cela peut être réalisé rapidement.

Comment configurer MEAN avec Mailgun pour obtenir une livraison programmée d’emails ?

Pour ajouter la fonctionnalité d’email programmé à votre application MEAN, suivez les étapes ci-dessous.

Vous aurez besoin de 4 fonctions : une fonction mailUsers pour sélectionner les destinataires, une fonction mailCreator pour générer l’email à partir d’un modèle, une fonction mailScheduler pour activer le déclencheur d’envoi à une heure précise, et une fonction mailSender pour envoyer les emails.

La configuration

Appelez les modules node et incluez nunjucks afin de pouvoir ajouter des variables à vos modèles d’emails HTML.

Interrogation des utilisateurs

Nous utilisons la requête mongoose find(x).where(y) pour passer au crible les utilisateurs, trouver les personnes qui ont choisi de recevoir des notifications le jour donné, et renvoyer une promesse.

Le créateur d’emails

Le mailCreator prend un tableau d’utilisateurs et génère un autre tableau qui contient les adresses email des utilisateurs et le modèle HTML rendu par nunjucks.

L’outil d’envoi

La fonction mailSender prendra une adresse email d’utilisateur, un objet et un modèle HTML pour notre email et renverra une promesse qui, une fois résolue, contient la réponse de l’API de Mailgun ; quelque chose comme « Queued ». Merci’.

Le programmateur

Ici, votre fonction de programmation prend en charge la tâche que nous voulons accomplir et l’exécute lorsque la variable et la description de la règle l’imposent. Par exemple : utiliser un programmateur node tous les jours pour planifier un envoi quotidien à 16 h 38. Consultez cette page pour en savoir plus sur la création de règles de récurrence dans node-scheduler.

Assemblage

À présent, il vous suffit d’appeler la fonction de programmation dans le contrôleur de livraison de nodes, en transmettant les utilisateurs renvoyés par votre requête, votre générateur d’emails et votre expéditeur d’emails. Vous pouvez trouver l’ensemble du système dans un contrôleur node ici. Voici un exemple d’appel d’envoi programmé :

Vous disposez maintenant d’un contrôleur qui trouvera les utilisateurs ayant choisi de recevoir des notifications à une heure donnée, et leur enverra un email lorsque votre programmateur de tâches se déclenchera.

Ce contrôleur vous permettra d’appliquer des règles d’envoi, de gérer la livraison, et bien plus encore. Grâce à cette intégration de l’application MEAN, vous pourrez programmer des emails en toute simplicité.

Conclusion

Bien que comprendre les tenants et les aboutissants de la livraison programmée d’emails puisse s’avérer délicat, l’utilisation d’une intégration d’application MEAN avec Mailgun peut vous aider à prendre en charge la programmation de vos emails et à envoyer vos emails exactement au moment où ils doivent partir. Et c’est tellement fetch.