
Dieser Beitrag richtet sich an den Entwickler, der das Beste aus den E-Mail-Vorlagenfunktionen von SparkPost herausholen möchte. Es wird davon ausgegangen, dass Sie mit dem Lesen von JSON-Inhalten und dem Folgen grundlegender Programmabläufe vertraut sind. Wenn Begriffe, die Ihnen möglicherweise neu sind, wie RFC 5322 eingeführt werden, wird der Text mit der entsprechenden Quellenreferenz verlinkt.
Dieser Beitrag richtet sich an den Entwickler, der das Beste aus den E-Mail-Vorlagenfunktionen von SparkPost herausholen möchte. Es wird angenommen, dass Sie mit dem Lesen von JSON-Inhalten und dem Befolgen grundlegender Programmierabläufe vertraut sind. Begriffe, die Ihnen möglicherweise neu sind, wie RFC 5322, sind im Text mit ihrer Quellenreferenz verlinkt. Damit das aus dem Weg geräumt ist, lassen Sie uns direkt eintauchen.
Die Vorlagen- und Übertragungsfunktionen von SparkPost machen das Senden von E-Mails unkompliziert. Diese Funktionen bieten eine Abstraktion für Text und HTML-Inhalte, was bedeutet, dass es meistens nicht notwendig ist, das rohe E-Mail-Format, das in RFC 5322 früher bekannt als (RFC 822) definiert ist, direkt zu codieren. Aber manchmal möchten Sie vielleicht komplexere Nachrichten erstellen, die andere Multipurpose Internet Mail Extensions (MIME) Teile enthalten, die nicht direkt über die RESTful-Schnittstelle von SparkPost zugänglich sind.
Vereinfachte E-Mail-Komposition
Zuerst lassen Sie uns ein Sonnenschein-Szenario für das Senden einer E-Mail durchgehen. Verwenden Sie den transmission-Endpunkt, um den text
und HTML Inhalt bereitzustellen. Hinter den Kulissen kümmert sich SparkPost um die Zusammenstellung einer gültigen RFC 5322 E-Mail. SparkPost fügt Ersetzungsvariablen aus substitution_data in den Text und HTML-Content ein. Dies ist eine mächtige Möglichkeit, benutzerdefinierte Inhalte für jeden Empfänger in einer gängigen Vorlage zu generieren.
Hier ist ein Beispiel für eine Übertragung mit HTML- und Textinhalten mit substitution_data.
Ersetzen von Datenarrays
Viele merken, dass die Übertragungs- und Vorlagenendpunkte von SparkPost einfache Ersetzungen im E-Mail-Header und im E-Mail-Body durchführen können. Aber viele übersehen die Möglichkeit, bedingte Inhalte oder Arrays von Daten bereitzustellen, die ebenfalls ersetzt werden können. Sie können auch eindeutige Inhalte pro Empfänger bereitstellen. In diesem Beispiel senden wir ein Array von eindeutigen Links an jeden Empfänger.
Dies wird erreicht, indem ein JSON-Array von Daten bereitgestellt wird, das in den E-Mail-Body eingefügt wird. Sobald die Daten bereitgestellt sind, verwendet SparkPost Logik in der Vorlage, um sie zu füllen.
In diesem Beispiel sucht SparkPost nach Ersetzungsdaten namens „files_html“ und führt ein „for each“ für jedes Element im Array durch. Es wird eine Zeile mit dem Wert von „file“ im „files_html“-Element erstellt. Beachten Sie das dreifache geschweifte um „loop_var.file“. Dies liegt daran, dass jedes Element des Arrays HTML enthält und wir dem Server mitteilen müssen, es so zu verwenden, wie es ist, und es nicht zu maskieren. Der Textteil wird ein einfacher Textbezeichner und die URL zur Datei sein.
Hier ist das vollständige funktionierende Beispiel:
Pro Tipp: In Ihrem Code ist es ratsam, die Ansichts-Markup von den Daten zu trennen, aber das Ziel hier war, das Beispiel so einfach und leicht nachvollziehbar wie möglich zu halten, also haben wir zwei Arrays erstellt. Ein Array ist für den HTML-Teil und das andere für den Textteil. In der Produktion wäre es üblich, einen Satz von Daten zu haben und die Logik im Vorlagencode zu schreiben.
Anhänge in Übertragungsfunktionen
Der Übertragungsendpunkt bietet auch eine Abstraktion für das Senden von Anhängen. Unten sehen Sie, dass Anhänge im content.attachments-Array angegeben sind, wobei jedes Objekt im Array ein einzelnes Anhängelement beschreibt. Wie zuvor kümmert sich SparkPost um das Codieren von Text, HTML, Ersetzungen und dem Durchlaufen des Anhänge-Arrays, um eine richtig formatierte E-Mail-Nachricht zu codieren.
Best Practices besagen, dass das Senden von Anhängen am besten vermieden werden sollte, es sei denn, dies ist ausdrücklich als Bestandteil Ihres Dienstes erforderlich.
Unten sind die erforderlichen Felder für einen Anhang:
type: Der MIME-Type des Anhangs
name: Der Dateiname des Anhangs
data: Base64-kodierte Datei-Daten
So sieht ein Anhang im Übertragungs-Content-Stanza aus:
Sie können auch "inline images" in einer Übertragung senden. Diese sind den Anhängen sehr ähnlich und werden im content.inline_images-Array angegeben, wobei jedes inline_image-Objekt dem oben gezeigten Anhangsobjekt ähnelt.
Anhänge in Vorlagen
Da wir nun den richtigen Hintergrund für das Senden von Anhängen mit dem Übertragungsendpunkt haben, lassen Sie uns einen Blick darauf werfen, wie dies mit Vorlagen gemacht wird. Zum Zeitpunkt der Erstellung dieses Textes gibt es keine Anhängeabstraktion wie bei Inline-Übertragungen. Man könnte den Schluss ziehen, dass Vorlagen nicht mit Anhängen erstellt werden können. Sie hätten teilweise recht, aber es gibt einen Workaround, obwohl Sie nicht mehr vom RFC 5322-Format isoliert sind.
Sie können Anhänge in Vorlagen umsetzen, indem Sie den RFC 5322-Inhalt selbst codieren, der die Anhänge umfasst. Die gute Nachricht ist, dass Sie nicht die Möglichkeit verlieren, Ersetzungsdaten weiterhin in Ihren E-Mail-Headern, HTML und Text-Teilen zu verwenden. Beachten Sie, dass dieser Vorlagentyp die Ersetzungen auf die Header und den ersten HTML- und ersten Text-Teil beschränkt.
Hier ist ein Beispiel, wie es gemacht wird.
RFC822 E-Mail
Erstellen Sie Ihre RFC 5322-E-Mail mit den gewünschten Ersetzungsdaten. Ich habe diese in meinem Mail-Client erstellt und an mich selbst gesendet. Sobald ich sie erhalten hatte, kopierte ich die Quelle und ersetzte die Felder, die ich dynamisch ersetzen möchte.
Der letzte MIME-Teil in dieser Nachricht, die Sie sehen, ist Content-Disposition: Anhang; Dateiname=myfile.txt“. Dort wird der Dateiname definiert. Ihr Anhangsinhalt wird sicherlich viel komplexer sein, aber dieses Beispiel versucht, es einfach zu halten.
Gespeicherte Vorlage
Sobald Sie eine gültige RFC 5322-E-Mail haben, speichern Sie sie mit dem email_rfc822-Formular des Vorlagenendpunkts anstelle der Verwendung von Text und HTML-Felder. Hier ist ein Beispiel, wie der Content für diese Nachricht aussieht:
Wenn die Anfrage abgeschlossen ist, antwortet SparkPost mit einer eindeutigen Kennung für Ihre neue Vorlage. Zum Beispiel xxxxxxx.
Senden der Vorlage
Die gute Nachricht ist, dass das Erstellen des RFC 5322-Inhalts der schwierige Teil war. Ab jetzt ist das Senden dieser Vorlage mit SparkPost genau dasselbe wie das Senden einer anderen Vorlage.
Hier erfahren Sie, wie wir diese Vorlage senden und die Ersetzungsdaten einfügen:
Vorlagen aus der API eines Mail-Clients
Wenn Sie eine Programmiersprache verwenden, die über eine Bibliothek zur Erstellung von E-Mails verfügt, können Sie diese verwenden, um die Vorlage programmgesteuert zu erstellen oder die Nachricht sogar inline zu senden. Hier ist ein Beispiel für die Verwendung von JavaMail über den Übertragungsendpunkt von SparkPost. Diese Methode sollte sich leicht in PHP oder Ihre bevorzugte Sprache übersetzen lassen.
Schlussfolgerung
Nachdem Sie nun gesehen haben, wie SparkPost verwendet werden kann, um E-Mails von fast jeder Komplexität zu senden, möchten Sie vielleicht einen Blick auf „SparkPost unterstützt das Senden von E-Mails auf der Apple Watch“ werfen oder sich die Ersetzungssyntax ansehen, um zu sehen, wie sie mit „if then else“, „Ausdrücken in Bedingungen“ oder „Array-Iteration“ direkt in Ihrer Vorlage oder Ihrem Übertragungs-Content verwendet werden kann.