Introduction à Node.js
En tant qu'Advocate Développeur pour SparkPost, j'écris beaucoup d'applications exemples. Mon parcours est principalement en développement front-end, donc ma langue la plus forte est JavaScript. Grâce à Node.js, je suis également un bon développeur backend. Cela signifie-t-il que je suis maintenant un développeur full stack ? Quoi qu'il en soit, il était important pour moi que nous ayons une excellente bibliothèque cliente SparkPost pour Node.js. Alors, je me suis plongé dedans et je suis devenu contributeur (même avant d'être embauché).
Permettez-moi de vous aider à démarrer l'envoi d'e-mails avec SparkPost sur votre projet Node.js.
Installation & Configuration
Je vais supposer que vous avez Node.js installé. Parce que nous suivons le calendrier de Support à Long Terme (LTS) de Node.js, vous devrez exécuter la version 4 ou supérieure. Vous pouvez voir quelle version vous utilisez avec la commande `node --version` dans votre fenêtre de terminal.
Créons un nouveau projet npm. Si vous en avez déjà un, vous pouvez passer cette partie.
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
Cela créera un nouveau projet et acceptera tous les paramètres par défaut. Vous pouvez également exécuter `npm init` et répondre à toutes les invites.
Maintenant, nous pouvons installer node-sparkpost :
> npm install sparkpost --save
Une fois installé, vous pouvez importer et créer une instance de la classe SparkPost :
const SparkPost = require('sparkpost') const client = new SparkPost('VOTRE CLÉ API')
Il est de bonne pratique d'éviter de mettre votre clé API dans le code. Nous recommandons fortement de la stocker en dehors de votre code, donc nous avons configuré la bibliothèque cliente pour détecter la variable d'environnement SPARKPOST_API_KEY .
Envoi d'E-mail
Maintenant que vous avez une instance SparkPost, vous êtes prêt à envoyer. Il y a pas mal d'options disponibles pour l'envoi, mais commençons par un exemple simple. Voici comment vous envoyer un e-mail à un seul destinataire, en spécifiant le contenu en ligne :
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Bonjour de node-sparkpost', html: '<p>Bonjour le monde</p>' }, recipients: [ {address: 'someone@somedomain.com'} ] }) .then(data => { console.log('Woohoo ! Vous venez d’envoyer votre premier envoi !') console.log(data) }) .catch(err => { console.log('Oups ! Quelque chose a mal tourné') console.log(err) })
Remarque : Cet exemple utilise des Promesses, mais ne vous inquiétez pas. Nous prennons également en charge les fonctions de rappel.
Il existe d'autres options disponibles avec les transmissions, y compris la spécification de modèles stockés ou de listes de destinataires, cc et bcc, l'ajout de pièces jointes, la spécification d'une campagne, l'utilisation de données de substitution, et bien plus encore. Consultez les exemples, docs pour la ressource Transmissions, et la documentation API des Transmissions pour plus d'infos.
Bonus : Envoi d'E-mail avec Nodemailer
Nodemailer est une bibliothèque populaire pour Node.js qui rend l'envoi d'e-mails « aussi facile qu'un gâteau ». Pour ceux d'entre vous qui choisissent d'utiliser cette bibliothèque, nous avons créé un transport SparkPost pour Nodemailer. Vous devrez installer les packages nodemailer et nodemailer-sparkpost-transport dans votre projet.
> npm install nodemailer nodemailer-sparkpost-transport --save
Maintenant, vous pouvez créer une instance de transport nodemailer :
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Remarquez comment je lis la clé API d'une variable d'environnement. Il est toujours préférable de ne jamais la mettre directement dans votre code.
Il existe plusieurs options qui peuvent être passées dans le transport SparkPost, comme l'identifiant de campagne et si le message est transactionnel ou non. Consultez le README.md pour toutes les options.
Voici comment vous enverriez le même message ci-dessus en utilisant Nodemailer :
transporter.sendMail({ from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Bonjour de nodemailer-sparkpost-transport', html: '<p>Bonjour le monde</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } })
Double Bonus : Envoi d'E-mail avec notif.me
Nous savons tous que l'e-mail est le roi de la communication mais parfois vous voulez pouvoir atteindre les gens via plusieurs canaux. notif.me est une bibliothèque Node.js pour envoyer toutes sortes de messages transactionnels. Que vous souhaitiez envoyer un e-mail, un sms, une notification push, ou des webpush, vous pouvez le faire facilement. Il dispose également de stratégies de chute et de round robin intégrées pour plusieurs fournisseurs. Nous avons récemment travaillé avec les créateurs pour construire un fournisseur SparkPost. Vous devrez installer le package `notifme-sdk` dans votre projet.
> npm install notifme-sdk --save
Vous pouvez maintenant créer une instance notifme avec le fournisseur SparkPost :
const NotifmeSdk = require('notifme-sdk').default const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [{ type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY, }] } } })
Encore une fois, nous tirons la clé API d'une variable d'environnement. Nous l'avons dit trois fois — c'est si important. 🙂
Répétons maintenant ce même exemple, cette fois en utilisant notif.me :
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Bonjour du fournisseur SparkPost notif.me', html: '<p>Bonjour le monde</p>' } }).then(console.log)
C'est vraiment facile à utiliser et je recommande de regarder les autres fonctionnalités.
Il n'y a pas de mauvaise façon d'utiliser Node
Lorsque vous devez envoyer des e-mails en utilisant Node.js, vous avez de nombreuses options. Nous avons travaillé dur pour rendre cela aussi indolore que possible.