
Als een Developer Advocate voor SparkPost schrijf ik veel voorbeeldapplicaties. Mijn achtergrond ligt vooral in front-end ontwikkeling, dus mijn sterkste taal is JavaScript. Dankzij Node.js ben ik ook een behoorlijke backend ontwikkelaar. Betekent dit dat ik nu een full stack ontwikkelaar ben?
Intro to Node.js
Als Developer Advocate voor SparkPost schrijf ik veel voorbeeldapplicaties. Mijn achtergrond ligt voornamelijk in front-end ontwikkeling, dus mijn sterkste taal is JavaScript. Dankzij Node.js ben ik ook een behoorlijke backend-ontwikkelaar. Over voorbeeldapplicaties gesproken, Node.js werkt ook geweldig voor het bouwen van serverless functies die integreren met Flow Builder - zoals onze Google Cloud Functions en Vision API integratiegids. Betekent dit dat ik nu een full stack ontwikkelaar ben? Hoe dan ook, het was belangrijk voor mij dat we een geweldige SparkPost-clientbibliotheek hadden voor Node.js. Dus ik dook er meteen in en werd een bijdrager (zelfs voordat ik werd aangenomen).
Laat mij u helpen om te beginnen met het verzenden van e-mails met SparkPost in uw Node.js-project. Voordat u zich verdiept in de specificaties van Node.js, wilt u misschien de basisprincipes van e-mail-API's in cloudinfrastructuur begrijpen en hoe ze passen in moderne applicatieontwikkeling.
Installatie & Setup
E-mail verzenden
Nu je een SparkPost-instance hebt, ben je klaar om te verzenden. Er zijn nogal wat opties beschikbaar voor het verzenden, maar laten we beginnen met een eenvoudig voorbeeld. Hier is hoe je een e-mail naar een enkele ontvanger verstuurt, met inline inhoud gespecificeerd:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Hello from node-sparkpost', html: '<p>Hello world</p>' }, recipients: [ {address: 'someone@somedomain.com'} ] }) .then(data => { console.log('Woohoo! Je hebt zojuist je eerste mailing verzonden!') console.log(data) }) .catch(err => { console.log('Oeps! Er ging iets mis') console.log(err) })
Opmerking: Dit voorbeeld gebruikt Promises, maar maak je geen zorgen. We ondersteunen ook callbackfuncties.
Voor zakelijke toepassingen die uitgebreide e-mailbeheer vereisen, moeten ontwikkelaars mogelijk ook overwegen om e-mailarchiveringssystemen te bouwen om opslag en nalevingsvereisten te beheren.
Er zijn meer opties beschikbaar met transmissions, waaronder het specificeren van opgeslagen sjablonen of ontvangerslijsten, cc en bcc, het toevoegen van bijlagen, het specificeren van een campagne, het gebruiken van substitutiedata, en nog veel meer. Bekijk de voorbeelden, documentatie voor de Transmissions-resource, en de Transmissions API-documentatie voor meer informatie.
Bonus: E-mail verzenden met Nodemailer
Nodemailer is een populaire bibliotheek voor Node.js die het verzenden van e-mail "easy as cake" maakt. Voor degenen onder u die ervoor kiezen om deze bibliotheek te gebruiken, hebben we een SparkPost transport voor Nodemailer gemaakt. U moet de pakketten nodemailer en nodemailer-sparkpost-transport in uw project installeren.
> npm install nodemailer nodemailer-sparkpost-transport --save
Nu kunt u een nodemailer transport instantie creëren:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Let op hoe ik de API Key lees uit een omgevingsvariabele. Het blijft een best practice om deze nooit direct in uw code te plaatsen.
Er zijn verschillende opties die in het SparkPost transport kunnen worden doorgegeven, zoals campagne-id en of het bericht transactioneel is. Bekijk de README.md voor alle opties.
Hier is hoe u hetzelfde bericht als hierboven zou versturen met Nodemailer:
transporter.sendMail({ from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from nodemailer-sparkpost-transport', html: '<p>Hello world</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } })
Dubbele Bonus: E-mail verzenden met notif.me
We weten allemaal dat e-mail de koning van communicatie is, maar soms wil je mensen via meerdere kanalen kunnen bereiken. notif.me is een Node.js-bibliotheek voor het verzenden van allerlei transactionele berichten. Of je nu een e-mail, sms, push of webpush wilt verzenden, je kunt het gemakkelijk doen. Het heeft ook ingebouwde fall- en round-robin-strategieën voor meerdere providers. We hebben onlangs samen met de makers een SparkPost-provider gebouwd. Je moet het `notifme-sdk`-pakket in je project installeren.
> npm install notifme-sdk --save
Je kunt nu een notifme-instantie maken met de SparkPost-provider:
const NotifmeSdk = require('notifme-sdk').default const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [{ type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY, }] } } })
Wederom halen we de API-sleutel uit een omgevingsvariabele. We hebben het drie keer gezegd — het is zo belangrijk. 🙂
Laten we nu hetzelfde voorbeeld herhalen, deze keer met behulp van notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hello from the SparkPost notif.me provider', html: '<p>Hallo wereld</p>' } }).then(console.log)
Het is echt gemakkelijk te gebruiken en ik raad aan om naar de andere functies.
Er is geen foute manier om te Node
Als het gaat om het verzenden van e-mails met Node.js, heb je veel opties. We hebben hard gewerkt om het zo eenvoudig mogelijk te maken.