Sailsjs et mailgun pour les emails
Dans une application, il arrive qu'on ait besoin d'envoyer des emails de manière automatique. Dans ce blog, je vais vous montrer comment vous pouvez envoyer des emails dans une application sailsjs avec le service de messagerie automatique mailgun. Si vous ne connaissez pas le framework sailsjs, je vous conseille de lire mon blog qu'est ce que sailsjs.
Création du compte mailgun pour sailsjs
Pour utiliser le service de messagerie mailgun, vous devez créer un compte gratuitement sur le site de mailgun. Une fois le compte créé vous aurez un domain (sandbox) et une API Key. Vous retrouverez ces information dans votre espace mailgun comme le montrent les images ci-dessous.
Configuration de mailgun dans sailsjs
Nous allons maintenant configurer mailgun dans sailsjs. Nous allons d'abord installer le module mailgun puis definir quelques variables.
Installer le module mailgun
npm install mailgun-js --save
Cette commande va installer le module mailgun dans votre application sailsjs.
Après installation, ouvrez le fichier config/custom.js et definissez les 3 variables suivantes:
mailgunDomain: 'votre_domaine_mailgun',
mailgunSecret: 'Votre_api_key',
mailgunFrom:'Email_source',
Création d'un helper pour envoyer les emails
Nous allons maintenant créer un helper dans notre application sailsjs pour envoyer les emails. Un helper dans une application sailsjs est comme un service que vous pouvez appeler depuis n'importe quel controller.
sails generate helper send-single-email
Cette commande va générer la structure d'un helper. Modifier le code comme ci-dessous.
var mailgun = require('mailgun-js')({apiKey: sails.config.custom.mailgunSecret, domain: sails.config.custom.mailgunDomain});
module.exports = {
friendlyName: 'Send single email',
description: '',
inputs: {
options:{
type:'json'
}
},
exits: {
},
fn: async function (inputs, exits) {
mailgun.messages().send(inputs.options, function (error, body) {
if(error){
return exits.error(error)
}
// All done.
return exits.success(body);
});
}
};
Notre helper prend comme input un objet de type json.
Envoi des emails depuis un controller
Une fois votre helper créé, vous pouvez l'appeller depuis n'importe quel controller de votre application sailsjs.
await sails.helpers.mail.sendSingleEmail({
to:'destination@email.com',
from:sails.config.custom.mailgunFrom,
subject:'Sujet',
text:'Votre message'
})
C'est terminé. Vous pouvez donc envoyer des emails avec sailsjs at mailgun. Dans un prochain blog, je vous expliquerai comment envoyer un mail avec un template pour une meilleure présentation de votre message.