Erweiterte E-Mail-Personalisierung - Amazon Simple Email Service

Erweiterte E-Mail-Personalisierung

Die Vorlagenfunktion in Amazon SES basiert auf dem Handlebars-Vorlagensystem. Verwenden Sie Handlebars, um Vorlagen mit erweiterten Funktionen wie verschachtelten Attributen, Array-Iteration, grundlegenden bedingten Anweisungen und dem Erstellen von eingebetteten Teilen zu erstellen. Dieser Abschnitt enthält Beispiele für diese Funktionen.

Handlebars umfasst neben den in diesem Abschnitt vorgestellten Funktionen noch weitere Funktionen. Weitere Informationen finden Sie unter Built-in Helpers auf handlebarsjs.com.

Anmerkung

SES entgeht dem HTML-Inhalt beim Rendern der HTML-Vorlage für eine Nachricht nicht. Dies bedeutet, dass Sie, wenn Sie vom Benutzer eingegebene Daten, z. B. aus einem Kontaktformular, einbeziehen, diese auf der Client-Seite entfernen müssen.

Analysieren von verschachtelten Attributen

Handlebars unterstützt verschachtelte Pfade. So können Sie komplexe Benutzerdaten einfach strukturieren und in Ihren E-Mail-Vorlagen auf diese Daten verweisen.

Sie können beispielsweise Empfängerdaten in mehrere allgemeine Kategorien unterteilen. Innerhalb der einzelnen Kategorien können Sie dann detaillierte Informationen hinzufügen. Das folgende Codebeispiel zeigt, wie diese Struktur für einen einzelnen Empfänger aussehen kann:

{ "meta":{ "userId":"51806220607" }, "contact":{ "firstName":"Anaya", "lastName":"Iyengar", "city":"Bengaluru", "country":"India", "postalCode":"560052" }, "subscription":[ { "interest":"Sports" }, { "interest":"Travel" }, { "interest":"Cooking" } ] }

Um in Ihren E-Mail-Vorlagen auf verschachtelte Attribute zu verweisen, geben Sie den Namen des übergeordneten Attributs, gefolgt von einem Punkt (.), gefolgt vom Namen des Attributs an, dessen Wert Sie verwenden möchten. Wenn Sie beispielsweise die Datenstruktur aus dem vorherigen Beispiel verwenden und den Vornamen des jeweiligen Empfängers in die E-Mail-Vorlage aufnehmen möchten, muss Ihre E-Mail-Vorlage folgenden Text enthalten: Hello {{contact.firstName}}!.

Handlebars kann mehrfach verschachtelte Pfade analysieren. Dies ermöglicht eine flexible Gestaltung Ihrer Vorlagendaten.

Durchlaufen von Listen

Die Hilfsfunktion each durchläuft die Elemente in einem Array. Der folgende Code ist ein Beispiel für eine E-Mail-Vorlage, die die Hilfsfunktion each verwendet, um eine detaillierte Liste der Interessen jedes Empfängers zu erstellen.

{ "Template": { "TemplateName": "Preferences", "SubjectPart": "Subscription Preferences for {{contact.firstName}} {{contact.lastName}}", "HtmlPart": "<h1>Your Preferences</h1> <p>You have indicated that you are interested in receiving information about the following subjects:</p> <ul> {{#each subscription}} <li>{{interest}}</li> {{/each}} </ul> <p>You can change these settings at any time by visiting the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}> Preference Center</a>.</p>", "TextPart": "Your Preferences\n\nYou have indicated that you are interested in receiving information about the following subjects:\n {{#each subscription}} - {{interest}}\n {{/each}} \nYou can change these settings at any time by visiting the Preference Center at https://www.example.com/prefererences/i.aspx?id={{meta.userId}}" } }
Wichtig

Die Werte der Attribute HtmlPart und TextPart im vorherigen Codebeispiel enthalten Zeilenumbrüche für eine bessere Lesbarkeit. Die JSON-Datei für Ihre Vorlage darf innerhalb dieser Wert keine Zeilenumbrüche enthalten. Wenn Sie dieses Beispiel in eine eigene JSON-Datei kopiert haben, entfernen Sie die Zeilenumbrüche und zusätzlichen Leerzeichen aus den Abschnitten HtmlPart und TextPart, bevor Sie fortfahren.

Nach dem Erstellen der Vorlage können Sie die Operationen SendTemplatedEmail oder SendBulkTemplatedEmail verwenden, um mithilfe dieser Vorlage E-Mails an Empfänger zu senden. Sofern jeder Empfänger über mindestens einen Wert im Objekt Interests verfügt, erhält er eine E-Mail mit einer detaillierten Liste seiner Interessen. Das folgende Beispiel zeigt eine JSON-Datei, mit der Sie unter Verwendung der vorherigen Vorlage E-Mails an mehrere Empfänger senden können:

{ "Source":"Sender Name <sender@example.com>", "Template":"Preferences", "Destinations":[ { "Destination":{ "ToAddresses":[ "anaya.iyengar@example.com" ] }, "ReplacementTemplateData":"{\"meta\":{\"userId\":\"51806220607\"},\"contact\":{\"firstName\":\"Anaya\",\"lastName\":\"Iyengar\"},\"subscription\":[{\"interest\":\"Sports\"},{\"interest\":\"Travel\"},{\"interest\":\"Cooking\"}]}" }, { "Destination":{ "ToAddresses":[ "shirley.rodriguez@example.com" ] }, "ReplacementTemplateData":"{\"meta\":{\"userId\":\"1981624758263\"},\"contact\":{\"firstName\":\"Shirley\",\"lastName\":\"Rodriguez\"},\"subscription\":[{\"interest\":\"Technology\"},{\"interest\":\"Politics\"}]}" } ], "DefaultTemplateData":"{\"meta\":{\"userId\":\"\"},\"contact\":{\"firstName\":\"Friend\",\"lastName\":\"\"},\"subscription\":[]}" }

Wenn Sie mithilfe der Operation SendBulkTemplatedEmail eine E-Mail an die Empfänger aus dem vorherigen Beispiel senden, erhalten diese eine Nachricht ähnlich wie in der folgenden Abbildung:

Verwenden von grundlegenden bedingten Anweisungen

Dieser Abschnitt baut auf dem Beispiel aus dem vorherigen Abschnitt auf. Im Beispiel aus dem vorherigen Abschnitt wird das Hilfsprogramm each verwendet, um eine Liste von Interessen zu durchlaufen. Die Empfänger, für die keine Interessen hinterlegt sind, erhalten jedoch eine E-Mail mit einer leeren Liste. Wenn Sie das Hilfsprogramm {{if}} verwenden, können Sie die E-Mail abhängig davon, ob ein bestimmtes Attribut in den Vorlagendaten vorhanden ist, unterschiedlich formatieren. Im folgenden Code wird das Hilfsprogramm {{if}} verwendet, um die Liste aus dem vorherigen Abschnitt anzuzeigen, wenn das Array Subscription mindestens einen Wert enthält. Falls das Array leer ist, wird ein anderer Textblock angezeigt.

{ "Template": { "TemplateName": "Preferences2", "SubjectPart": "Subscription Preferences for {{contact.firstName}} {{contact.lastName}}", "HtmlPart": "<h1>Your Preferences</h1> <p>Dear {{contact.firstName}},</p> {{#if subscription}} <p>You have indicated that you are interested in receiving information about the following subjects:</p> <ul> {{#each subscription}} <li>{{interest}}</li> {{/each}} </ul> <p>You can change these settings at any time by visiting the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}> Preference Center</a>.</p> {{else}} <p>Please update your subscription preferences by visiting the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}> Preference Center</a>. {{/if}}", "TextPart": "Your Preferences\n\nDear {{contact.firstName}},\n\n {{#if subscription}} You have indicated that you are interested in receiving information about the following subjects:\n {{#each subscription}} - {{interest}}\n {{/each}} \nYou can change these settings at any time by visiting the Preference Center at https://www.example.com/prefererences/i.aspx?id={{meta.userId}}. {{else}} Please update your subscription preferences by visiting the Preference Center at https://www.example.com/prefererences/i.aspx?id={{meta.userId}}. {{/if}}" } }
Wichtig

Die Werte der Attribute HtmlPart und TextPart im vorherigen Codebeispiel enthalten Zeilenumbrüche für eine bessere Lesbarkeit. Die JSON-Datei für Ihre Vorlage darf innerhalb dieser Wert keine Zeilenumbrüche enthalten. Wenn Sie dieses Beispiel in eine eigene JSON-Datei kopiert haben, entfernen Sie die Zeilenumbrüche und zusätzlichen Leerzeichen aus den Abschnitten HtmlPart und TextPart, bevor Sie fortfahren.

Das folgende Beispiel zeigt eine JSON-Datei, mit der Sie unter Verwendung der vorherigen Vorlage E-Mails an mehrere Empfänger senden können:

{ "Source":"Sender Name <sender@example.com>", "Template":"Preferences2", "Destinations":[ { "Destination":{ "ToAddresses":[ "anaya.iyengar@example.com" ] }, "ReplacementTemplateData":"{\"meta\":{\"userId\":\"51806220607\"},\"contact\":{\"firstName\":\"Anaya\",\"lastName\":\"Iyengar\"},\"subscription\":[{\"interest\":\"Sports\"},{\"interest\":\"Cooking\"}]}" }, { "Destination":{ "ToAddresses":[ "shirley.rodriguez@example.com" ] }, "ReplacementTemplateData":"{\"meta\":{\"userId\":\"1981624758263\"},\"contact\":{\"firstName\":\"Shirley\",\"lastName\":\"Rodriguez\"}}" } ], "DefaultTemplateData":"{\"meta\":{\"userId\":\"\"},\"contact\":{\"firstName\":\"Friend\",\"lastName\":\"\"},\"subscription\":[]}" }

In diesem Beispiel erhalten Empfänger, deren Vorlagendaten eine Liste mit Interessen enthalten, dieselbe E-Mail wie im Beispiel aus dem vorherigen Abschnitt. Empfänger, deren Vorlagendaten keine Interessen enthalten, erhalten jedoch eine E-Mail ähnlich wie in der folgenden Abbildung gezeigt:

Erstellen von eingebetteten Teilen

Mithilfe von eingebetteten Teilen können Sie Vorlagen vereinfachen, die wiederholte Zeichenfolgen enthalten. Sie können beispielweise einen eingebetteten Teil erstellen, der den Vornamen und, falls verfügbar, den Nachnamen des Empfängers enthält, Verwenden Sie dazu am Anfang Ihrer Vorlage den folgenden Code:

{{#* inline \"fullName\"}}{{firstName}}{{#if lastName}} {{lastName}}{{/if}}{{/inline}}\n
Anmerkung

Das Zeilenumbruchzeichen (\n) ist erforderlich, um den {{inline}}-Block vom Inhalt Ihrer Vorlage zu trennen. Der Zeilenumbruch wird in der endgültigen Ausgabe nicht dargestellt.

Nachdem Sie den Teil fullName erstellt haben, können Sie ihn an jeder Stelle in Ihrer Vorlage verwenden, indem Sie dem Namen des Teils ein Größerzeichen (>) gefolgt von einem Leerzeichen voranstellen, wie im folgenden Beispiel: {{> fullName}}. Eingebettete Teile werden nicht zwischen den einzelnen Bestandteilen der E-Mail übertragen. Wenn Sie beispielsweise denselben eingebetteten Teil sowohl in der HTML- als auch in der Textversion der E-Mail verwenden möchten, müssen Sie ihn sowohl im Bereich HtmlPart als auch im Bereich TextPart definieren.

Sie können eingebettete Teile auch beim Durchlaufen von Arrays verwenden. Mit dem folgenden Code können Sie eine Vorlage mit dem eingebetteten Teil fullName erstellen. In diesem Beispiel wird der eingebettete Teil sowohl auf den Empfängernamen als auch auf ein Array mit anderen Namen angewendet:

{ "Template": { "TemplateName": "Preferences3", "SubjectPart": "{{firstName}}'s Subscription Preferences", "HtmlPart": "{{#* inline \"fullName\"}} {{firstName}}{{#if lastName}} {{lastName}}{{/if}} {{/inline~}}\n <h1>Hello {{> fullName}}!</h1> <p>You have listed the following people as your friends:</p> <ul> {{#each friends}} <li>{{> fullName}}</li> {{/each}}</ul>", "TextPart": "{{#* inline \"fullName\"}} {{firstName}}{{#if lastName}} {{lastName}}{{/if}} {{/inline~}}\n Hello {{> fullName}}! You have listed the following people as your friends:\n {{#each friends}} - {{> fullName}}\n {{/each}}" } }
Wichtig

Die Werte der Attribute HtmlPart und TextPart im vorherigen Codebeispiel enthalten Zeilenumbrüche für eine bessere Lesbarkeit. Die JSON-Datei für Ihre Vorlage darf innerhalb dieser Wert keine Zeilenumbrüche enthalten. Wenn Sie dieses Beispiel in eine eigene JSON-Datei kopiert haben, entfernen Sie die Zeilenumbrüche und zusätzlichen Leerzeichen aus diesen Abschnitten.