Einführung in Node.js
Als Developer Advocate für SparkPost schreibe ich viele Beispielanwendungen. Mein Hintergrund liegt hauptsächlich in der Front-End-Entwicklung, daher ist meine stärkste Sprache JavaScript. Dank Node.js bin ich auch ein anständiger Backend-Entwickler geworden. Bedeutet das, dass ich jetzt ein Full-Stack-Entwickler bin? Jedenfalls war es mir wichtig, dass wir eine großartige SparkPost-Clientbibliothek für Node.js haben. Also bin ich direkt losgelegt und wurde Mitwirkender (sogar bevor ich eingestellt wurde).
Lassen Sie mich Ihnen helfen, mit dem Versand von E-Mails mit SparkPost in Ihrem Node.js-Projekt zu beginnen.
Installation & Einrichtung
Ich gehe davon aus, dass Sie Node.js installiert haben. Da wir dem Node.js Long Term Support (LTS) Zeitplan folgen, müssen Sie Version 4 oder höher ausführen. Sie können sehen, welche Version Sie verwenden, indem Sie den Befehl `node –version` in Ihrem Terminalfenster eingeben.
Lassen Sie uns ein neues npm-Projekt erstellen. Wenn Sie bereits eines haben, können Sie diesen Teil überspringen.
> mkdir sparkpost-test > cd sparkpost-test > npm init --yes
Dies wird ein neues Projekt erstellen und alle Standardeinstellungen akzeptieren. Sie können auch stattdessen `npm init` ausführen und alle Eingabeaufforderungen beantworten.
Jetzt können wir node-sparkpost installieren:
> npm install sparkpost --save
Nach der Installation können Sie eine Instanz der SparkPost-Klasse importieren und erstellen:
const SparkPost = require('sparkpost') const client = new SparkPost('IHREN API-SCHLÜSSEL')
Es ist eine gute Praxis, Ihren API-Schlüssel nicht im Code zu hinterlegen. Wir empfehlen dringend, ihn außerhalb Ihres Codes zu speichern, daher haben wir die Clientbibliothek so eingerichtet, dass sie die Umgebungsvariable SPARKPOST_API_KEY erkennt.
E-Mail senden
Jetzt, da Sie eine SparkPost-Instanz haben, sind Sie bereit zum Senden. Es gibt viele Optionen für das Senden, aber lassen Sie uns mit einem einfachen Beispiel beginnen. So senden Sie eine E-Mail an einen einzelnen Empfänger und geben inline Inhalte an:
client.transmissions.send({ content: { from: 'test@your-sending-domain.com', subject: 'Hallo von node-sparkpost', html: '<p>Hallo Welt</p>' }, recipients: [ {address: 'someone@somedomain.com'} ] }) .then(data => { console.log('Woohoo! Sie haben gerade Ihre erste Mailing gesendet!') console.log(data) }) .catch(err => { console.log('Ups! Etwas ist schiefgelaufen') console.log(err) })
Hinweis: Dieses Beispiel verwendet Promises, aber keine Sorge. Wir unterstützen auch Rückruffunktionen.
Es gibt weitere Optionen für Übertragungen, einschließlich der Angabe von gespeicherten Vorlagen oder Empfängerl Listen, cc und bcc, das Hinzufügen von Anhängen, die Angabe einer Kampagne, die Verwendung von Ersatzdaten und vieles mehr. Schauen Sie sich die Beispiele, Dokumentation für die Übertragungsressource und die Dokumentation der Übertragungs-API für weitere Informationen an.
Bonus: E-Mail mit Nodemailer senden
Nodemailer ist eine beliebte Bibliothek für Node.js, die das Senden von E-Mails „so einfach wie Kuchen“ macht. Für diejenigen von Ihnen, die diese Bibliothek verwenden möchten, haben wir einen SparkPost-Transport für Nodemailer erstellt. Sie müssen die Pakete nodemailer und nodemailer-sparkpost-transport in Ihrem Projekt installieren.
> npm install nodemailer nodemailer-sparkpost-transport --save
Jetzt können Sie eine Nodemailer-Transportinstanz erstellen:
const nodemailer = require('nodemailer') const sparkPostTransport = require('nodemailer-sparkpost-transport') const transporter = nodemailer.createTransport(sparkPostTransport({ 'sparkPostApiKey': process.env.SPARKPOST_API_KEY }))
Beachten Sie, dass ich den API-Schlüssel aus einer Umgebungsvariable lese. Es ist immer noch eine bewährte Praxis, diesen nicht direkt in Ihren Code zu setzen.
Es gibt mehrere Optionen, die in den SparkPost-Transport übergeben werden können, wie Kampagnen-ID und ob die Nachricht transaktional ist. Schauen Sie sich die README.md für alle Optionen an.
So würden Sie die gleiche Nachricht wie oben mit Nodemailer senden:
transporter.sendMail({ from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hallo von nodemailer-sparkpost-transport', html: '<p>Hallo Welt</p>' }, (err, info) => { if (err) { console.error(err); } else { console.log(info); } })
Doppelter Bonus: E-Mail mit notif.me senden
Wir wissen alle, dass E-Mail der König der Kommunikation ist, aber manchmal möchten Sie Menschen über mehrere Kanäle erreichen. notif.me ist eine Node.js-Bibliothek zum Senden aller Arten von transaktionalen Nachrichten. Egal, ob Sie eine E-Mail, SMS, Push oder Web-Pushs senden möchten, Sie können dies problemlos tun. Es hat auch integrierte Fall- und Round-Robin-Strategien für mehrere Anbieter. Wir haben kürzlich mit den Erstellern zusammengearbeitet, um einen SparkPost-Anbieter zu erstellen. Sie müssen das Paket `notifme-sdk` in Ihrem Projekt installieren.
> npm install notifme-sdk --save
Jetzt können Sie eine notifme-Instanz mit dem SparkPost-Anbieter erstellen:
const NotifmeSdk = require('notifme-sdk').default const notifmeSdk = new NotifmeSdk({ channels: { email: { providers: [{ type: 'sparkpost', apiKey: process.env.SPARKPOST_API_KEY, }] } } })
Wiederholen wir, dass wir den API-Schlüssel aus einer Umgebungsvariable abrufen. Wir haben es dreimal gesagt – es ist so wichtig. 🙂
Jetzt lassen Sie uns dasselbe Beispiel wiederholen, diesmal mit notif.me:
notifmeSdk.send({ email: { from: 'test@your-sending-domain.com', to: 'someone@somedomain.com', subject: 'Hallo von dem SparkPost notif.me Anbieter', html: '<p>Hallo Welt</p>' } }).then(console.log)
Es ist wirklich einfach zu verwenden, und ich empfehle Ihnen, sich die anderen Funktionen anzusehen.
Es gibt keinen falschen Weg zu Node
Wenn es darum geht, E-Mails mit Node.js zu senden, haben Sie viele Optionen. Wir haben hart daran gearbeitet, es so schmerzlos wie möglich zu gestalten.