Intro tot Node.js
Als Developer Advocate voor SparkPost schrijf ik veel voorbeeldtoepassingen. Mijn achtergrond is voornamelijk frontend-ontwikkeling, dus mijn sterkste taal is JavaScript. Dankzij Node.js ben ik ook een redelijk goede backend-ontwikkelaar. 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 bijdrageleverancier (zelfs nog voordat ik werd aangenomen).
Laat mij u helpen om te beginnen met het verzenden van e-mails met SparkPost op uw Node.js project.
Installatie & Setup
Ik ga ervan uit dat u Node.js geïnstalleerd heeft. Omdat we het Node.js Long Term Support (LTS) schema volgen, moet u versie 4 of hoger draaien. U kunt controleren welke versie u draait met behulp van het `node --version`-commando in uw terminalvenster.
Laten we een nieuw npm-project maken. Als u er al een hebt, kunt u dit deel overslaan.
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
Dit zal een nieuw project creëren en alle standaardinstellingen accepteren. U kunt ook `npm init` uitvoeren en alle prompts beantwoorden.
Nu kunnen we node-sparkpost installeren:
> npm install sparkpost --save
Na installatie kunt u een instantie van de SparkPost-klasse importeren en maken:
const SparkPost = require('sparkpost') const client = new SparkPost('YOUR API KEY')
Het is een goede gewoonte om uw API-sleutel niet in de code op te nemen. We raden ten zeerste aan deze buiten uw code op te slaan, dus hebben we de clientbibliotheek ingesteld om de SPARKPOST_API_KEY omgeving variabele te detecteren.
E-mail verzenden
Nu u een SparkPost-instantie hebt, bent u klaar om te verzenden. Er zijn nogal wat opties beschikbaar voor verzending, maar laten we beginnen met een eenvoudig voorbeeld. Hier leest u hoe u een e-mail naar een enkele ontvanger verzendt en inline inhoud opgeeft:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Hallo van node-sparkpost', html: '<p>Hallo wereld</p>' }, recipients: [ {address: 'someone@somedomain.com'} ] }) .then(data => { console.log('Woohoo! U heeft zojuist uw eerste mailing verzonden!') console.log(data) }) .catch(err => { console.log('Oeps! Er is iets misgegaan') console.log(err) })
Opmerking: Dit voorbeeld maakt gebruik van Promises, maar maakt u zich geen zorgen. We ondersteunen ook callback-functies.
Er zijn meer opties beschikbaar met transmissies, waaronder het specificeren van opgeslagen sjablonen of ontvangerlijsten, cc en bcc, het toevoegen van bijlagen, een campagne specificeren, gebruik van substitutiegegevens, en nog veel meer. Bekijk de voorbeelden, de documentatie voor de Transmissions-resource, en de Transmissions API-documentatie voor meer info.
Bonus: E-mail Verzenden met Nodemailer
Nodemailer is een populaire bibliotheek voor Node.js waarmee het verzenden van e-mails “eenvoudig als taart” is. Voor degenen die ervoor kiezen om deze bibliotheek te gebruiken, hebben we een SparkPost-transport voor Nodemailer gemaakt. U moet de nodemailer- en nodemailer-sparkpost-transport-pakketten in uw project installeren.
> npm install nodemailer nodemailer-sparkpost-transport --save
Nu kunt u een nodemailer-transportinstantie maken:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Merk op hoe ik de API-sleutel lees uit een omgevingsvariabele. Het is nog steeds een beste praktijk om die nooit direct in uw code te stoppen.
Er zijn verschillende opties die kunnen worden doorgegeven aan het SparkPost-transport, zoals campagn-id en of het bericht al dan niet transactioneel is. Kijk in de README.md voor alle opties.
Hier ziet u hoe u hetzelfde bericht als eerder verzendt met gebruik van Nodemailer:
transporter.sendMail({ from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hallo van nodemailer-sparkpost-transport', html: '<p>Hallo wereld</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 wilt u mensen via meerdere kanalen kunnen bereiken. notif.me is een Node.js-bibliotheek voor het verzenden van allerlei transactionele berichten. Of u nu een e-mail, sms, push of webpushes wilt verzenden, u kunt het eenvoudig doen. Het heeft ook ingebouwde val- en round-robin-strategieën voor meerdere providers. We hebben recent samengewerkt met de makers om een SparkPost-provider te bouwen. U moet het `notifme-sdk`-pakket in uw project installeren.
> npm install notifme-sdk --save
U 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, }] } } })
Nogmaals, halen we de API-sleutel uit een omgevingsvariabele. We hebben het drie keer gezegd — het is zo belangrijk. 🙂
Laten we nu ditzelfde voorbeeld herhalen, deze keer met gebruik van notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hallo van de SparkPost notif.me provider', html: '<p>Hallo wereld</p>' } }).then(console.log)
Het is echt gemakkelijk te gebruiken en ik raad aan om te kijken naar de andere functies.
Er is geen verkeerde manier om te Noden
Als het gaat om het verzenden van e-mails met behulp van Node.js, hebt u veel opties. We hebben hard gewerkt om het zo pijnloos mogelijk te maken.