
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 SparkPosts E-Mail-Vorlagenfähigkeiten herausholen möchte. Es wird davon ausgegangen, dass Sie mit dem Lesen von JSON-Inhalten und dem Verfolgen einfacher Programmierabläufe vertraut sind. Wenn Ihnen neue Begriffe wie RFC 5322 vorgestellt werden, ist der Text mit seiner Quellenreferenz verlinkt. Nun, da das aus dem Weg geräumt ist, lassen Sie uns direkt eintauchen.
SparkPosts Vorlagen und Übertragungsfähigkeiten machen das Versenden von E-Mails einfach. Diese Fähigkeiten bieten eine Abstraktion für Text und HTML-Inhalte, was bedeutet, dass es meistens nicht notwendig ist, das rohe E-Mail-Format direkt zu kodieren, das in RFC 5322 vormals als (RFC 822) definiert ist. Aber manchmal möchten Sie vielleicht komplexere Nachrichten erstellen, die andere Mehrzweck-Internet-Mail-Erweiterungen (MIME) Teile enthalten, die nicht direkt über die SparkPost-REST-Schnittstelle zugänglich sind.
Vereinfachte E-Mail-Zusammensetzung
Zuallererst, lassen Sie uns ein ideales Szenario für das Senden einer E-Mail betrachten. Verwenden Sie den Übertragungs-Endpunkt, um den Text
und HTML Inhalt bereitzustellen. Im Hintergrund sorgt SparkPost dafür, dass eine gültige RFC 5322 E-Mail zusammengesetzt wird. SparkPost wird Ersatzvariablen aus substitution_data in den Text- und HTML-Inhalt einfügen. Dies ist eine leistungsstarke Methode, um für jeden Empfänger Inhalte in einer gemeinsamen Vorlage zu erzeugen.
Hier ist ein Beispiel für eine Übertragung mit HTML- und Textinhalt und substitution_data.
Datenarrays ersetzen
Viele Leute erkennen, dass SparkPosts Übertragungs- und Vorlagenendpunkte einfache Inhalts Ersatz in E-Mail-Kopfdaten und E-Mail-Körpern durchführen können. Aber viele übersehen die Möglichkeit, bedingte Inhalte oder Datenarrays bereitzustellen, die ebenfalls ersetzt werden können. Sie können auch einzigartige Inhalte pro Empfänger bereitstellen. In diesem Beispiel senden wir jedem Empfänger ein Array einzigartiger Links.
Dies wird erreicht, indem ein JSON-Array von Daten bereitgestellt wird, das in den E-Mail-Körper eingefügt wird. Sobald die Daten bereitgestellt sind, verwendet SparkPost die Logik in der Vorlage, um sie zu bevölkern.
In diesem Beispiel sucht SparkPost nach Ersetzungsdaten namens „files_html“ und führt eine „for each“-Schleife für jedes Element im Array durch. Es wird eine Zeile mit dem Wert „file“ im „files_html“-Element erstellt. Beachten Sie die dreifachen geschweiften Klammern 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 escapen. Der Textteil ist ein einfaches Textlabel und die URL zur Datei.
Hier ist das fertiggestellte Arbeitsbeispiel:
Profi-Tipp: In Ihrem Code ist es ratsam, das Ansichtsmarkup von den Daten getrennt zu halten, aber das Ziel war hier, das Beispiel so einfach und nachvollziehbar wie möglich zu halten. Deshalb haben wir zwei Arrays erstellt. Ein Array ist für den HTML-Teil und das andere für den Textteil. Im Produktionsbetrieb wäre es üblich, einen Datensatz zu haben und die Logik im Vorlagencode zu schreiben.
Anhänge in Übertragungsfähigkeiten
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 Anhangselement beschreibt. Wie zuvor kümmert sich SparkPost um die Kodierung von Text, HTML, Ersetzungen und das Durchlaufen des Anhangs-Arrays, um eine korrekt formatierte E-Mail-Nachricht zu kodieren.
Best Practices besagen, dass das Senden von Anhängen am besten vermieden wird, es sei denn, es wird ausdrücklich als Teil Ihres Dienstes benötigt.
Unten sind die erforderlichen Felder für einen Anhang dargestellt:
typ: Der MIME-Typ des Anhangs
name: Der Dateiname des Anhangs
data: Base64-codierte Datei-Daten
So sieht ein Anhang in der Übertragungs-Inhaltsstrophe aus:
Sie können auch „Inline-Bilder“ in einer Übertragung senden. Diese sind den Anhängen sehr ähnlich und werden im content.inline_images-Array angegeben, wobei jedes der inline_image Objekte den oben gezeigten Anhangsobjekten ähnlich ist.
Anhänge in Vorlagen
Da wir nun den notwendigen Hintergrund für das Senden von Anhängen mit dem Übertragungsendpunkt haben, werfen wir einen Blick darauf, wie man dies mit Vorlagen macht. Zum Zeitpunkt des Schreibens gibt es keine Anhangs-Abstraktion wie bei Inline-Übertragungen. Man könnte schlussfolgern, dass Vorlagen nicht mit Anhängen erstellt werden können. Sie hätten teilweise recht, aber es gibt eine Lösung, obwohl Sie nicht mehr vom RFC 5322-Format isoliert sind.
Sie können Anhänge in Vorlagen erreichen, indem Sie RFC 5322 Inhalte selbst kodieren, die die Anhänge beinhalten. Die gute Nachricht ist, dass Sie die Möglichkeit nicht verlieren, weiterhin Ersatzdaten in Ihren E-Mail-Kopfzeilen, HTML und Text-Teilen zu verwenden. Beachten Sie, dass diese Art von Vorlage die Ersetzungen auf die Kopfzeilen 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 E-Mail-Client erstellt und sie mir selbst gesendet. Nachdem ich sie erhalten hatte, habe ich die Quelle kopiert und die Felder ersetzt, die ich dynamisch ersetzen möchte.
Der letzte MIME Teil dieser Nachricht enthält „Content-Disposition: attachment; filename=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 der email_rfc822-Form des Vorlage-Endpunkts anstatt Text und HTML-Felder zu verwenden. Hier ist ein Beispiel dafür, wie der Inhalt für diese Nachricht aussieht:
Wenn die Anforderung abgeschlossen ist, antwortet SparkPost mit einem eindeutigen Identifikator für Ihre neue Vorlage. Zum Beispiel xxxxxxx.
Senden der Vorlage
Die gute Nachricht ist, dass das Erstellen der RFC 5322-Inhalte der schwierige Teil war. Ab dieser Stelle ist das Senden dieser Vorlage mit SparkPost genau dasselbe wie das Senden jeder anderen Vorlage.
So senden wir diese Vorlage und füllen die Ersetzungsdaten aus:
Vorlagen aus der Mail-Client-API
Wenn Sie eine Programmiersprache verwenden, die eine Bibliothek zum Erstellen von E-Mails hat, können Sie diese verwenden, um die Vorlage programmatisch zu erstellen oder die Nachricht sogar inline zu senden. Hier ist ein Beispiel für die Verwendung von JavaMail, um genau dies durch den SparkPost-Übertragungsendpunkt zu tun. Diese Methode sollte sich leicht auf PHP oder Ihre bevorzugte Sprache übertragen lassen.
Fazit
Da Sie nun sehen, wie mit SparkPost E-Mails nahezu jeder Komplexität gesendet werden können, möchten Sie vielleicht einen Blick auf „SparkPost unterstützt das Senden von E-Mails auf der Apple Watch“ werfen oder einen Blick auf die Ersatzsyntax werfen, um zu sehen, wie sie mit „if then else“, „Ausdrücken in Bedingungen“ oder „Array-Iteration“ direkt in Ihrer Vorlage oder Inhalt verwendet werden kann.