Ein Leitfaden zur Verwendung von SparkPost mit Node.js

Vogel

01.09.2017

E-Mail

1 min read

Ein Leitfaden zur Verwendung von SparkPost mit Node.js

Wichtige Erkenntnisse

    • SparkPost bietet mehrere Möglichkeiten, E-Mails von Node.js zu senden — direkte API-Aufrufe, Nodemailer-Transport und notif.me Multi-Channel-Zustellung.

    • Speichern Sie API-Schlüssel in Umgebungsvariablen, statt sie hart zu codieren. SparkPost erkennt automatisch SPARKPOST_API_KEY.

    • Die Transmissions API bietet Ihnen mächtige Flexibilität: Vorlagen, Ersetzungsdaten, Anhänge und Kampagnen-Tagging.

    • Nodemailer-Benutzer können mit dem offiziellen Transport sofort auf SparkPost umsteigen — ohne größere Code-Überarbeitungen.

    • notif.me bietet Multi-Channel-Zustellung (E-Mail, SMS, Push) mit Fallback-Strategien und ist ideal für robuste Benachrichtigungssysteme.

    • Node.js passt sich natürlich an moderne Cloud-E-Mail-APIs und serverlose Workflows an und macht es einfach, E-Mail-Funktionen direkt in Ihre App einzubetten.

Q&A Highlights

  • Was ist der schnellste Weg, um mit SparkPost in Node.js E-Mails zu senden?

    Installieren Sie das sparkpost-Paket, initialisieren Sie den Client mit einem API-Schlüssel (vorzugsweise über Umgebungsvariablen), und rufen Sie die transmissions.send()-Methode mit Empfängern + Inhalt auf.

  • Muss ich meinen SparkPost API-Schlüssel im Code speichern?

    Nein — und das sollten Sie auch nicht. Verwenden Sie Umgebungsvariablen. Der Client liest automatisch SPARKPOST_API_KEY.

  • Kann ich E-Mails mit Vorlagen anstelle von inline HTML senden?

    Ja. Die Transmissions-API unterstützt gespeicherte Vorlagen, Ersetzungsdaten, Empfängerlisten, Anhänge, cc/bcc und mehr.

  • Was ist, wenn ich bereits Nodemailer verwende?

    Sie sind abgedeckt — SparkPost wird mit einem offiziellen Nodemailer-Transport geliefert. Konfigurieren Sie es einfach mit Ihrem API-Schlüssel und verwenden Sie Nodemailer wie gewohnt.

  • Kann SparkPost mit Multi-Channel-Messaging-Systemen arbeiten?

    Ja. Bibliotheken wie notifme-sdk erlauben E-Mail, SMS, Push und Webpush mit Fallback-Mechanismen, und sie enthalten einen SparkPost-Anbieter.

  • Ist Node.js geeignet für serverlose Email-Workflows?

    Absolut. Es passt gut zu Cloud Functions, Lambdas und jeder serverlosen Umgebung, die SparkPost’s API für ereignisgesteuerte E-Mails verwendet.

  • Wer sollte die Transmissions API im Vergleich zu Nodemailer oder notif.me verwenden?

    • Verwenden Sie die Transmissions API, wenn Sie volle Kontrolle und Leistung wünschen.

    • Verwenden Sie Nodemailer, wenn Ihr Projekt es bereits verwendet und Sie eine schnelle Integration wünschen.

    • Verwenden Sie notif.me für Multi-Channel-Messaging oder Fallback-Lieferstrategien.

  • Was ist die größte Best Practice beim Senden von E-Mails aus Node?

    Behandeln Sie Ihren API-Schlüssel als sensibel – nur Umgebungsvariablen, niemals in den Code einfügen.

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 Front-End-Entwicklung, daher ist meine stärkste Sprache JavaScript. Dank Node.js bin ich auch ein anständiger Backend-Entwickler. Apropos Beispielanwendungen, Node.js funktioniert auch hervorragend für den Aufbau von serverlosen Funktionen, die sich mit Flow Builder integrieren - wie unser Google Cloud Functions und Vision API Integrationsleitfaden. Bedeutet das, dass ich jetzt ein Full Stack Entwickler bin? Wie auch immer, es war mir wichtig, dass wir eine großartige SparkPost-Client-Bibliothek für Node.js hatten. Also habe ich mich direkt hineingestürzt und wurde ein Beitragsleistender (sogar bevor ich eingestellt wurde).

Erlauben Sie mir, Ihnen zu helfen, mit SparkPost in Ihrem Node.js-Projekt E-Mails zu senden. Bevor Sie sich mit den Besonderheiten von Node.js 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

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 verwenden. Sie können die von Ihnen verwendete Version mit dem Befehl `node –version` in Ihrem Terminalfenster überprüfen.

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 Standardwerte akzeptieren. Sie können auch stattdessen `npm init` ausführen und alle Aufforderungen beantworten.

Jetzt können wir node-sparkpost installieren:

> npm install sparkpost --save

Sobald das installiert ist, können Sie importieren und eine Instanz der SparkPost-Klasse erstellen:

const SparkPost = require('sparkpost') const client = new SparkPost('YOUR API KEY')

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 Client-Bibliothek so eingerichtet, dass sie die Umgebungsvariable SPARKPOST_API_KEY erkennt.

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 verwenden. Sie können die von Ihnen verwendete Version mit dem Befehl `node –version` in Ihrem Terminalfenster überprüfen.

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 Standardwerte akzeptieren. Sie können auch stattdessen `npm init` ausführen und alle Aufforderungen beantworten.

Jetzt können wir node-sparkpost installieren:

> npm install sparkpost --save

Sobald das installiert ist, können Sie importieren und eine Instanz der SparkPost-Klasse erstellen:

const SparkPost = require('sparkpost') const client = new SparkPost('YOUR API KEY')

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 Client-Bibliothek so eingerichtet, dass sie die Umgebungsvariable SPARKPOST_API_KEY erkennt.

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 verwenden. Sie können die von Ihnen verwendete Version mit dem Befehl `node –version` in Ihrem Terminalfenster überprüfen.

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 Standardwerte akzeptieren. Sie können auch stattdessen `npm init` ausführen und alle Aufforderungen beantworten.

Jetzt können wir node-sparkpost installieren:

> npm install sparkpost --save

Sobald das installiert ist, können Sie importieren und eine Instanz der SparkPost-Klasse erstellen:

const SparkPost = require('sparkpost') const client = new SparkPost('YOUR API KEY')

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 Client-Bibliothek so eingerichtet, dass sie die Umgebungsvariable SPARKPOST_API_KEY erkennt.

Senden von Email

Jetzt, da Sie eine SparkPost-Instanz haben, sind Sie bereit zum Senden. Es gibt einige Optionen zum Versenden, aber lassen Sie uns mit einem einfachen Beispiel beginnen. 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 Callback-Funktionen.

Für Unternehmensanwendungen, die ein umfassendes E-Mail-Management erfordern, müssen Entwickler möglicherweise auch unterstützen den Aufbau von E-Mail-Archivierungssystemen in Betracht ziehen, um Speicher- und Compliance-Anforderungen zu erfüllen.

Es stehen mehr Optionen mit Übertragungen zur Verfügung, einschließlich der Angabe gespeicherter Vorlagen oder Empfängerlisten, cc und bcc, Anhängen von Anhängen, Angabe einer Kampagne, Verwendung von Ersatzdaten und vielem mehr. Mehr Informationen finden Sie in den Beispielen, den Dokumentationen für die Transmissions-Ressource und der Transmissions-API-Dokumentation.

Bonus: Senden von Email mit Nodemailer

Nodemailer ist eine beliebte Bibliothek für Node.js, die das Senden von E-Mails „so einfach wie Kuchen“ macht. Für diejenigen unter 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, wie ich den API-Schlüssel aus einer Umgebungsvariable lese. Es ist immer noch eine bewährte Praxis, ihn niemals direkt in Ihren Code zu schreiben.

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. Werfen Sie einen Blick auf die README.md für alle Optionen.

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: '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öchten Sie Menschen über mehrere Kanäle erreichen können. 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 mit Leichtigkeit tun. Es verfügt auch über eingebaute Fallback- und Round-Robin-Strategien für mehrere Anbieter. Wir haben kürzlich mit den Entwicklern zusammengearbeitet, um einen SparkPost-Provider zu entwickeln. 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-Provider erstellen:

const NotifmeSdk = require('notifme-sdk').default;
const notifmeSdk = new NotifmeSdk({
  channels: {
    email: {
      providers: [
        {
          type: 'sparkpost',
          apiKey: process.env.SPARKPOST_API_KEY
        }
      ]
    }
  }
});

Erneut ziehen wir den API-Schlüssel aus einer Umgebungsvariablen. Wir haben es dreimal gesagt — es ist so wichtig. 🙂

Nun lassen Sie uns dasselbe Beispiel wiederholen, 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>Hello world</p>'
  }
})
.then(console.log)
.catch(console.error);

Es ist wirklich einfach zu bedienen und ich empfehle, sich die anderen Funktionen anzusehen.

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.

Andere Neuigkeiten

Mehr lesen aus dieser Kategorie

A person is standing at a desk while typing on a laptop.

Die komplette AI-native Plattform, die mit Ihrem Business skalierbar ist.

A person is standing at a desk while typing on a laptop.

Die komplette AI-native Plattform, die mit Ihrem Business skalierbar ist.