Netlify Funktionen für das Senden von E-Mails

0
60

Lassen Sie uns sagen, Sie rocken ein JAMstack-style-Website (kein server-side-Sprachen im Einsatz), aber Sie wollen etwas tun, sondern dynamisch wie eine E-Mail senden. Kein problem! Das ist der springende Punkt, der JAMstack. Es ist nicht nur die statische hosting. Es ist das plus irgendetwas anderes tun was Sie tun wollen, durch JavaScript und APIs.

Hier ist das setup: Sie benötigen einen service, der Ihnen die E-Mail senden. Lassen Sie uns nur Holen Sparkpost aus dem Hut. Es gibt eine Reihe von Ihnen, und ich überlasse den Vergleich Ihrer Funktionen und Preisen für Sie, denn wir tun etwas sehr basic-und low-volume hier. Senden Sie eine E-Mail mit Sparkpost, treffen Sie Ihre API mit der API-Schlüssel, die Informationen über die E-Mail, die Sie senden möchten, und Sparkpost sendet es.

Also müssen Sie laufen ein wenig server-side-code schützen Sie Ihren API-Schlüssel, die während der API-Anfrage. Wo kann man ausführen, dass der code? Lambda ist perfekt für, dass (aka eine serverlose Funktion oder cloud Funktion). Es gibt viele Dienstleistungen, die Ihnen helfen führen Sie diese, aber keine ist einfacher als Netlify, wo Sie sein könnte, das Ihre Website hostet, sowieso.

Holen Sie sich Sparkpost bereit

Ich habe mich für Sparkpost und stellte sicher, dass mein Konto wurde eingerichtet und verifiziert. Das dashboard wird es geben Sie einen API-Schlüssel:

Werfen Sie API-Schlüssel in Netlify

Bestandteil des Schutzes unserer API-Schlüssel ist damit, dass es nur in server-side-code, aber auch, dass wir es aus unserem Git-repository. Netlify hat Umgebungsvariablen setzen, um Funktionen wie nötig, so werden wir plop es dort:

Let ‘ s spin-up-Netlify Dev, als dass Sie diese einfach, mit zu arbeiten

Netlify Dev ist ein Magisches kleines tool, das Sachen wie laufen unsere statische Website-generator für uns. Für den Standort an dem ich arbeite, benutze ich Eleventy und Netlify Dev-auto-Erkennung und auto-es läuft, ist super ordentlich. Aber noch wichtiger ist, für uns, es gibt uns eine lokale URL, die läuft mit unseren Funktionen für die Prüfung.

Einmal es ist alles installiert, läuft sollte es so Aussehen:

Im terminal screenshot oben zeigt die website selbst wird gesponnen, bis auf localhost:8080 ein, aber er sagt auch:

◈ Lambda-server lauscht auf 59629

Das wird sehr nützlich sein in einem Augenblick, wenn wir schreiben und testen Sie unsere neue Funktion, die durch die Art und Weise, können wir, das Gerüst aus, wenn wir möchten. Zum Beispiel:

netlify Funktionen:erstellen-name Hallo-Welt

Von dort aus, es wird Sie bitten, einige Fragen und dann machen Sie eine Funktion. Ziemlich nützlich, um schnell loszulegen. Ich werde schreiben, dass die Funktion in einem moment, aber zuerst, lassen Sie uns dieses…

Sparkpost hat Ihre eigene Node-lib

Sparkpost hat eine API, natürlich, für das senden dieser E-Mails. Wir schauen bei den docs und lernen, wie man Ihre URL-Endpunkte mit den richtigen Daten.

Aber die Dinge sogar noch einfacher mit Ihren Node.js Bindungen. Lasst uns das set, indem alle Ordner und Dateien, die wir brauchen:

/Projekt
… Ihre gesamte website oder was auch immer …
/Funktionen/
/senden-E-Mail/
Paket.json
senden-email.js

Alle brauchen wir das Paket.json-Datei ist Ruck in die Sparkpost Bibliothek, so npm installieren sparkpost –save-dev wird den trick tun es.

Dann die send-email.js Importe, die lib und nutzt es:

const SparkPost = require(‘sparkpost’);
const client = new SparkPost(Prozess -.env.SPARKPOST);

die Exporte.handler = function(Ereignis, Kontext, callback) {
client.Getriebe
.send({
Inhalt: {
aus: ‘chris@css-tricks.com’,
Thema: ‘Hallo, Welt!’,
html:
“<html><body><p>Meine Coole E-Mail.</p></body></html>”
},
Empfänger: [{ Adresse: chriscoyier@gmail.com’ }]
});
}

Sie wollen Ihre Dokumente für die Fehlerbehandlung und so weiter. Wieder haben wir nur gewählt Sparkpost aus dem Hut hier. Jede E-Mail senden Dienst API und Helfer-code für die gängigen Sprachen.

Unsere Linie 2! Das ist, wo müssen wir die API-Schlüssel, und wir brauchen nicht zu hart-code, weil Netlify Dev ist so verdammt Lust, dass es eine Verbindung zu Netlify und lassen Sie uns verwenden Sie die Umgebungsvariable von dort.

Testen Sie die Funktion

Wenn Netlify Dev ausgeführt wird, unsere Lamba Funktionen haben, die speziellen port Sie laufen. Wir werden in der Lage sein, mit einer URL wie diese, um die Funktion auszuführen:

http://localhost:34567/.netlify/functions/send-email

Diese Funktion wird ausgeführt, wenn er getroffen wird, so können wir Sie einfach besuchen, die in einem browser ausgeführt werden.

Testen

Vielleicht werden Sie POST an diese URL. Vielleicht schickt Ihr mir den Text der E-Mail. Vielleicht werden Sie senden Sie die Empfänger-E-Mail-Adresse. Es wäre schön, um eine Test-Umgebung für alle.

Gut, wir können die Konsole.log () – Zeug und finden es im terminal, so dass immer praktisch. Plus, können wir schreiben unsere Funktionen für die Rückgabe von was auch immer, und wir konnten Blick auf die Antworten in eine Art von API-Test-tool, wie Briefträger oder Schlaflosigkeit.

Es funktioniert!

Ich überlasse es an Ihnen, mit Phantasie; -)