
Als Developer Advocate für SparkPost schreibe ich viele Beispielanwendungen. Mein Hintergrund ist hauptsächlich die Frontend-Entwicklung, daher ist meine stärkste Sprache JavaScript. Dank Node.js bin ich auch ein passabler Backend-Entwickler. Bedeutet das, dass ich jetzt ein Full-Stack-Entwickler bin?
Einführung in Node.js
Als Developer Advocate für SparkPost schreibe ich viele Beispielanwendungen. Mein Hintergrund ist hauptsächlich Frontend-Entwicklung, daher ist JavaScript meine stärkste Sprache. Dank Node.js bin ich auch ein anständiger Backend-Entwickler. Apropos Beispielanwendungen, Node.js eignet sich auch hervorragend zum Erstellen serverloser Funktionen, die in Flow Builder integriert sind - wie unser Google Cloud Functions und Vision API Integration Guide. Bedeutet das, dass ich jetzt ein Full-Stack-Entwickler bin? Wie auch immer, es war wichtig für mich, dass wir eine großartige SparkPost-Client-Bibliothek für Node.js hatten. Also stieg ich sofort ein und wurde ein Mitwirkender (noch bevor ich eingestellt wurde).
Lassen Sie mich Ihnen helfen, mit SparkPost in Ihrem Node.js-Projekt E-Mails zu senden. Bevor Sie sich mit den Node.js-spezifischen Details befassen, möchten Sie vielleicht die Grundlagen von E-Mail-APIs in der Cloud-Infrastruktur verstehen und wie sie in die moderne Anwendungsentwicklung passen.
Installation & Einrichtung
Senden von Email
Jetzt, da Sie eine SparkPost-Instanz haben, sind Sie bereit zum Senden. Es gibt einige Optionen für das Senden, aber beginnen wir mit einem einfachen Beispiel. So senden Sie eine E-Mail an einen einzelnen Empfänger, indem Sie inline Inhalte angeben:
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! You just sent your first mailing!') console.log(data) }) .catch(err => { console.log('Whoops! Something went wrong') console.log(err) })
Hinweis: Dieses Beispiel verwendet Promises, aber keine Sorge. Wir unterstützen auch Rückruffunktionen.
Für Unternehmensanwendungen, die ein umfassendes E-Mail-Management erfordern, müssen Entwickler möglicherweise auch E-Mail-Archivierungssysteme entwickeln, um Speicher- und Compliance-Anforderungen zu erfüllen.
Es gibt mehr Optionen mit Transmissions, einschließlich der Angabe gespeicherter Vorlagen oder Empfängerlisten, cc und bcc, das Hinzufügen von Anhängen, das Festlegen einer Kampagne, die Verwendung von Substitutionsdaten und vieles mehr. Schauen Sie sich die Beispiele, Dokumentation für die Transmissions-Ressource und die Transmissions API-Dokumentation für weitere Informationen an.
Bonus: Senden von Email mit Nodemailer
Nodemailer ist eine beliebte Bibliothek für Node.js, die das Versenden von E-Mails „so einfach wie Kuchen“ macht. Für diejenigen, die sich entscheiden, diese Bibliothek zu verwenden, 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
Nun 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, wie ich den API-Schlüssel aus einer Umgebungsvariable lese. Es ist immer noch eine bewährte Methode, diesen niemals direkt in Ihren Code einzufügen.
Es gibt mehrere Optionen, die in den SparkPost-Transport übergeben werden können, wie z.B. Kampagnen-ID und ob die Nachricht transaktional ist oder nicht. Schauen Sie sich die README.md für alle Optionen an.
Hier erfahren Sie, wie Sie dieselbe Nachricht wie oben mit Nodemailer senden würden:
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); } })
Doppelbonus: Senden von Email mit notif.me
Wir alle wissen, dass E-Mail der König der Kommunikation ist, aber manchmal möchte man in der Lage sein, Menschen über mehrere Kanäle zu erreichen. notif.me ist eine Node.js-Bibliothek zum Senden aller Arten von transaktionalen Nachrichten. Egal, ob Sie eine E-Mail, SMS, Push oder Webpushes senden möchten, Sie können es problemlos tun. Es verfügt auch über eingebaute 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 `notifme-sdk`-Paket in Ihrem Projekt installieren.
> npm install notifme-sdk --save
Sie können jetzt 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, }] } } })
Wie gesagt, wir ziehen den API-Schlüssel aus einer Umgebungsvariable. Wir haben es dreimal gesagt — es ist so wichtig. 🙂
Wiederholen wir nun dasselbe Beispiel, diesmal mit 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 Welt</p>' } }).then(console.log)
Es ist wirklich einfach zu bedienen und ich empfehle, einen Blick auf die anderen Funktionen. zu werfen.
Es gibt keinen falschen Weg, Node zu verwenden
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 machen.