Unsere Template-Sprache umfasst vordefinierte Platzhalter und Logik-Elemente, mit denen Sie dynamische Inhalte in Ihre E-Mail einfügen und die Anzeige dieser Inhalte für den Empfänger ändern können.
Die Template-Sprache bietet eine standardisierte, gemeinsame Struktur für die Erstellung von effizienten Templates, sowie leistungsstarke Design-Optionen.
Gut zu wissen: Die neue Template-Sprache ersetzt eine ältere Version der SendinBlue Template-Sprache, die eine andere Syntax verwendete und weniger robust war. In diesem Leitfaden bezieht sich der Begriff "Template-Sprache" die neue Template-Sprache.
Erste Schritte
Erstellen Sie Ihre E-Mail als Kampagne, wenn Sie eine einzelne E-Mail erstellen möchten, die an viele Empfänger gleichzeitig versendet werden soll.
Speichern und erstellen Sie sie als Template, wenn Sie ein Template erstellen möchten, das als Transaktions-E-Mail oder im Rahmen eines Automation-Workflows versendet werden soll.
Der Versand von E-Mails, die die Template-Sprache verwenden, kann über die jeweiligen SendinBlue API v3-Aufrufe (für Kampagnen) ausgelöst werden, oder (für Transaktions-E-Mails) durch die Angabe der Kampagnen- oder Template-ID. Sie können auch über den SMTP Relay Server versendet werden, indem der Header X-SIB-API
mit den korrekten Parametern angegeben wird.
Gut zu wissen: Wenn Sie unsere Transaktionsplattform (SMTP) noch nicht verwendet haben, müssen Sie möglicherweise die Aktivierung anfordern. Melden Sie sich zur Überprüfung bei Ihrem Konto an und rufen Sie diese Seite auf. Wenn Sie keine Aufforderung zur Aktivierung Ihres SMTP-Kontos sehen und Ihre Quote höher ist als 0, können Sie mit dem Versand beginnen.
Überblick
Die Template-Sprache verwendet Variablen und Filter, die durch spezifische Werte ersetzt werden, wenn der Versand der E-Mail ausgelöst wird, sowie Tags, die Logik-Elemente für die Kontrolle und die Anzeige des Inhalts hinzufügen.
Zwei Arten von Begrenzern sind verfügbar:
{{ ... }}
- fügt das Ergebnis einer Variable oder eines Filters in die E-Mail ein bzw. gibt es wieder{% ... %}
- führt die Logik eines Tags aus, beispielsweise einer for-Schleife.
Gut zu wissen: Die Template-Sprache kann verwendet werden, um mehrere Aspekte Ihrer E-Mail zu ändern, einschließlich der Betreffzeile, dem Pre-Header, dem Inhalt von HTML <body>
-Tags und dem Empfängerfeld "An". HTML wird standardmäßig in Templates automatisch escaped, dieses Verhalten kann jedoch mit dem nachstehend im Detail beschriebenen autoescape-
Tag geändert werden.
Variablen
Es stehen drei Arten von Variablen zur Verfügung, die nachstehend beschrieben werden.
1. Vordefinierte Variablen
Sie stehen für alle SendinBlue-Nutzer zur Verfügung:
{{ mirror }} |
fügt einen Link ein, um Ihre E-Mail als Webseite anzuzeigen Diese Variable ist nicht obligatorisch. |
Sie wird normalerweise am Anfang einer E-Mail platziert: <a href="{{ mirror }}">Click here to view this message in your browser.</a> |
{{ unsubscribe }} |
fügt einen Link ein, um sich von all Ihren E-Mails abzumelden Alle über SendinBlue versandten Nicht-Transaktions-E-Mails sollten einen Abmeldelink enthalten. |
Wird in der Regel in der Fußzeile platziert und wie ein Link formatiert: <a href="{{ unsubscribe }}">Click here to unsubscribe.</a> |
{{ update_profile }} |
Fügen Sie einen Link hinzu, so dass Ihre Empfänger deren Informationen sowie Vorlieben aktualisieren können
|
Wird in der Regel in der Fußzeile platziert und wie ein Link formatiert: <a href="{{ update_profile }}">Aktualisieren Sie Ihre Informationen</a> |
2. Kontaktattribute
Dieser Variablentyp besteht aus zwei Elementen und ist wie folgt aufgebaut:
{{ contact.attributeNAME }}
Attribute = Name des SendinBlue-Kontaktattributs wie auf Ihrer Kontakte-Seite in SendinBlue angezeigt. Attribute sind immer GROSSGESCHRIEBEN und enthalten nie Leerzeichen.
Beispiel: Um an der Stelle PHONE des Attributs die Telefonnummer eines Kontakts einzufügen, verwenden Sie {{ contact.PHONE }}
Wenn das Kontaktattribut einen Bindestrich enthält (-), zum Beispiel CELL-PHONE, formatieren Sie Ihre Variable stattdessen so: {{ contact|key:"ATTRIBUTE" }}.
Beispiel: {{ contact|key:"CELL-PHONE" }}
3. Transaktionsparameter
Gut zu wissen: Wenn Sie die Funktion "Einen Test senden" nutzen, um eine Testversion Ihres E-Mail-Templates zu versenden, werden die Variablen in der Test-E-Mail nicht durch empfängerspezifische Inhalte ersetzt, sondern genau so angezeigt, wie sie in Ihrem Template codiert wurden.
Transaktionsparameter-Variablen bestehen ebenfalls aus zwei Elementen und sind wie folgt aufgebaut:
{{ params.parameterNAME }}
parameterNAME = der Name Ihres Transaktionsparameters, mit demselben Format und derselben Gross- bzw. Kleinschreibung wie in der API
Beispiel: Um an der Stelle PRODUCTS eine Liste von Produkten einzufügen, verwenden Sie: {{ params.PRODUCTS }}
.
Sehen wir uns jetzt eine häufiges Anwendungsbeispiel an: das Generieren einer Liste der von einem Kunden gekauften Produkte. Da die Zahl der gekauften Produkte je nach Kunde variiert, können wir eine For-Schleife mit Ihrem PRODUCTS-Transaktionsparameter kombinieren, wie in diesem Beispiel:
<ul>
{% for product in params.products %}
<li><strong>{{ product.NAME }}</strong> - {{ product.PRICE }}</li>
{% endfor %}
</ul>
Das Ergebnis wäre eine ungeordnete Liste mit einer Aufzählung der Produkte einschließlich Produktname und Preis (siehe unten), und die Liste jedes Empfängers könnte eine einmalige Anzahl von Produkten enthalten:
- Produkt 1 - $10
- Produkt 2 - $10
- Produkt 3 - $10
Gut zu wissen: Wir empfehlen, keine Bindestriche oder Sonderzeichen in den Namen Ihrer Variablen/Parameter zu verwenden. Wenn Sie keine andere Wahl haben, können Sie {{ params|key:”parameter-NAME” }}
verwenden. Möglicherweise müssen Sie den Filter mehrfach verschachteln, wie hier: {{ params|key:”
my-product”|key:”my-product-name” }}.
Datenfelder
Bei der Verwendung eines Datenfelds können Sie auf alle einzelnen Elemente zugreifen. Geben Sie Ihre ID wie folgt an: params.parameterARRAY.ID.parameterNAME
. Beispiel: {{ params.PRODUCTS.1.NAME }}
.
Tags
Die am häufigsten in Templates verwendeten Tags sind
if
, for
und autoescape
. Richtlinien und Beispiele sind nachstehend aufgeführt.
if
Die leistungsstarke Logik von if
ermöglicht es Ihnen, ganze Inhaltsblöcke zu Ihrem Template hinzuzufügen oder daraus zu entfernen (oder Inhalte in einem Block zu ändern). So können Sie ein Template für mehrere Szenarien verwenden und effizienter arbeiten.
Mit dem Tag {% if %}
können Sie testen, ob ein Ausdruck wahr (oder ein Datenfeld leer) ist, und den E-Mail-Inhalt basierend auf dem Ergebnis ändern. Sie können außerdem nach falschen Werten, mehreren Bedingungen und mehreren Zweigen suchen.
Hier finden Sie ein paar häufige Anwendungsbeispiele für if
:
if |
überprüft, ob ein Wert wahr oder falsch oder ein Datenfeld leer ist |
{% if contact.ACTIVE %} --- {% if params.tutors %} {% for tutor in params.tutors %} |
== |
überprüft, ob ein Ausdruck wahr ist |
{% if coupon == "WELCOME" %} --- {% if contact.DONOR == true %} |
if, in |
überprüft, ob ein Wert (Teilstring) in einem String oder ob eine Variable in einem Datenfeld vorhanden ist |
{% if "@example.com" in "bob@example.com" %}
{% if "Piano" in params.types %} |
not |
überprüft auf falsche Werte |
{% if not user.subscribed %} |
and / or |
bewertet mehrere Bedingungen |
{% if temperature > 10 and temperature < 55 %}
{% if contact.LANG == “FR” and contact.COUNTRY == “Canada” %}
{% if contact.COUNTRY == “United States” or contact.COUNTRY == “Canada” %} |
elif, else |
bewertet mehrere Zweige |
Hallo {% if contact.GESCHLECHT == "männlich" %} Hr. {{ contact.NACHNAME }}, --- {% if event.paid %} |
Gut zu wissen: Von der Anwendung von Vergleichen mit dem
if-
Tag auf Variablen, die "Float"-Werte enthalten, wird abgeraten, da sie möglicherweise ungenaue Ergebnisse produzieren. (Bei Float-Werten handelt es sich um Werte, die eine Bruchzahl statt einer ganzen Zahl enthalten.) Sie können diese Vergleiche jedoch anwenden, wenn der Wert eine Zeichenfolge ist (zwischen Anführungszeichen "").
for
Wie wir später in diesem Tutorial sehen werden, ist for
in Kombination mit Ihren Transaktionsparametern besonders leistungsstark. Es vereinfacht Ihnen komplexe Aufgaben wie das Einfügen von dynamischen Produktlisten.
Das Tag {% for %}
ermöglicht es Ihnen, die Schleife über jeden Wert einer Sequenz zu spannen oder darüber zu iterieren. Dies ist besonders hilfreich, wenn die Zahl der Elemente in der Sequenz beim Erstellen eines Templates unbekannt ist.
Hier sind mehrere geläufige Anwendungsbeispiele für for
:
for, in |
zeigt eine Liste an |
<ul> |
else |
zeigt einen Ersatz-Block an, wenn die Sequenz leer ist |
<ul> Würde „kein Benutzer gefunden“ anzeigen. |
reversed |
kehrt die Eingabereihenfolge in Ihrer Sequenz um |
{% for country in params.countries reversed %} {% end for %} Würde eine Liste von Ländern anzeigen, jedoch in umgekehrter Reihenfolge im Vergleich zur Originalliste. |
Loop-Variablen
In einem For-Schleifen-Block können Sie außerdem diese speziellen Variablen verwenden:
forloop.Counter |
Entspricht immer einer Ganzzahl, um die Zahl der Einträge in der Schleife anzugeben. Die Zählung beginnt bei 1, nach dem ersten Eintrag in der Schleife entspricht forloop.Counter 1. Kann einfach verwendet werden, um Elemente in einer Schleife zu nummerieren: {% for product in params.products %} wird wie folgt als Liste angezeigt: 1. Produkt a |
forloop.Counter0 |
Die aktuelle Iteration der Schleife. (beginnt bei 0) |
forloop.Revcounter |
Immer auf eine Ganzzahl eingestellt, um die in der Schleife verbleibenden Elemente anzugeben. Nach dem ersten Eintrag in der Schleife entspricht forloop.Revcounter der Gesamtzahl der Elemente in der durchlaufenen Sequenz. Nach dem letzten Eintrag in der Schleife entspricht forloop.revcounter 1. |
forloop.Revcounter0 |
Die Zahl der Iterationen bis zum Ende der Schleife (beginnt bei 0) |
forloop.First |
Der boolesche Wert zeigt "True" an, wenn es sich um den ersten Durchlauf durch die Schleife handelt. Diese Funktion ist besonders praktisch, um das erste Element in der Liste speziell zu formatieren, zum Beispiel durch die Anwendung des Filters "upper" (nachstehend im Abschnitt "Filter" beschrieben) auf den ersten Punkt in dieser Produktliste. {% for product in params.products %} Kann eine Produktliste wie folgt anzeigen: 1. ERSTES PRODUKT - 5,00 € |
forloop.Last |
Die Boolesche Variable zeigt True an, wenn dies der letzte Durchlauf durch die Schleife ist. In einer Liste von Elementen wird häufig ein Trennzeichen (wie , oder |) verwendet. |
forloop.Parentloop |
Referenziert das Objekt forloop mit der übergeordneten Schleife, im Falle von geschachtelten Schleifen. Hier ein Beispiel: {% for country in countries %} |
Gut zu wissen: Bei Namen von Schleifen-Variablen muss die Groß- und Kleinschreibung beachtet werden.
Beispiel: Um jedem Element Ihrer Iteration einen numerischen Wert (ab 1) zuzuweisen, verwenden Sie {{ forloop.Counter }}
:
{% for user in users %}
{{ forloop.Counter }} - {{ user.username }}
{% endfor %}
autoescape
Gut zu wissen: Standardmäßig escaped SendinBlue den HTML- (und JS) Inhalt aller Variablen. Das bedeutet, dass in einer Variable enthaltene HTML-Inhalte escaped und als Text erfasst werden. Lautet der Inhalt Ihrer Variable beispielsweise <h1>My title</h1>, wird Ihr Template genau diesen Text in der E-Mail anzeigen: <h1>My title</h1>, anstatt den Text "My title" als H1-Überschrift wiederzugeben.
Das Tag autoescape
kontrolliert das aktuelle Auto-Escape-Verhalten. Da SendinBlue-Templates HTML-Inhalte standardmäßig automatisch escapen, müssen Sie dieses Tag in der Regel anwenden, um Auto-Escape in einem bestimmten Block zu deaktivieren. Der Block muss mit dem Endtag endautoescape
abschließen.
Sehen wir uns ein geläufiges Beispiel an, in dem die Deaktivierung von autoescape
nützlich sein kann. Nehmen wir an, dass Sie Produkte in einer Variablen gruppieren, jedes Produkt aber eine individuelle Formatierung benötigt.
Wenn autoescape
wie folgt verwendet wird:
{% autoescape off %}{{ params.my_html }}{% endautoescape %}
wird Auto-Escape für die Variable {{ params.my_html }}
deaktiviert. Wenn der Inhalt Ihrer Variable <h1>My title</h1>
ist, wird er als H1-Überschrift angezeigt.
Die einzigen Ausnahmen sind Variablen, für die das Escapen bereits deaktiviert wurde, entweder durch den Code, der die Variable definiert, oder durch die Anwendung des Filters Safe
.
verbatim
Das Verbatim-Tag ermöglicht die Verwendung von doppelten Klammern {{ }}
in Ihrer E-Mail, ohne dass sie als Element der Template-Sprache erkannt werden. Um diese Symbole zu escapen{{ }}
und direkt in Ihrer E-Mail anzuzeigen, setzen Sie sie in dieses Tag:
{% verbatim %}
{{ Print variable }}
{% endverbatim %}
Dieser Text wird in Ihrer E-Mail vollständig wie folgt angezeigt:
{{ Print variable }}
Filter
Variablen können durch Filter geändert werden. Filter sind durch einen vertikalen Strich von der Variable getrennt (|) und können optionale Argumente in Klammern enthalten. Mehrere Filter können verkettet werden. Das Ergebnis eines Filters wird auf den nächsten angewendet.
Die häufigsten Filter
Ändern und Formatieren von Groß- und Kleinschreibung
capfirst |
schreibt einen Wert groß Der erste Buchstabe wird großgeschrieben, alle anderen klein. |
{{ contact.NAME|capfirst }} john doe wird zu John doe. |
title |
generiert eine Anrede-Version des Werts Wörter beginnen mit Großbuchstaben, alle anderen Buchstaben werden kleingeschrieben. |
{{ contact.NAME|title }} john doe wird zu John Doe. |
upper |
wandelt einen Wert in Großbuchstaben um |
{{ contact.NAME|upper }} john doe wird zu JOHN DOE. |
lower |
wandelt einen Wert in Kleinschreibung um |
{{ contact.NAME|lower }} JOHN DOE wird zu john doe. |
trunchars |
Schneidet einen String ab, wenn er die angegebene Zeichenzahl überschreitet. Abgeschnittene Strings enden mit einer übersetzbaren Ellipse (…). |
{{ value|truncatechars:9 }} Wenn "value" = Glückwunsch, würde er wiedergegeben als Glückwuns… |
Formatieren von Zahlen
floatformat |
Rundet die Float-Werte Ihres Parameters oder Ihres Kontaktattributs auf die angegebene Dezimalstelle. |
Wenn Ihr Template {{ contact.BALANCE | floatformat: 2}} {{ contact.BALANCE | floatformat: 0}} |
Formatieren von Daten
time_parse |
konvertiert Ihr Datenformat (als String) in ein Standarddatenformat, das mit anderen Filtern verwendet werden kann Verwenden Sie Ihr aktuelles Datumsformat als Argument: Formatieren Sie das genaue Datum/die genaue Uhrzeit von Monday January 2 15:04:05 -0700 MST 2006 in dem Format, das angezeigt würde, wenn dieser Wert verwendet würde. Wenn Ihr String das Format RFC3339 hat, können Sie den Parser time_parse_rfc3339 ohne Argument verwenden. |
{{ params.my_date|time_parse:"15:04 02/01/2006" }} {{ params.my_date|time_parse:"Monday 02 January 2006" }} Hinweis: Für Tage und Monate werden nur englische Wörter erkannt. |
date |
erfasst das Datum im angegebenen Format Bitte beachten Sie, dass Sie ein Datum zu diesem Filter hinzufügen müssen. Sie erhalten ein Datum aus einem String, der den time_parse-Filter verwendet. |
{{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|date:"Mon Jan 2 15:04:05 2006"}} Wird zu: Fri Jun 1 14:01:00 2018 Hinweis: Für Tage und Monate werden nur englische Wörter erkannt.
|
Bitte beachten Sie Folgendes:
- Abkürzungen von Tagen und Monaten und ausgeschriebene Namen werden nur in Englisch unterstützt.
- Wenn kein Wert angegeben wird, wird er als 0 betrachtet.
- Sofern nicht anders angegeben, ist die Standard-Zeitzone UTC.
- Sie können die Schlüsselwörter am/pm verwenden.
- Am häufigsten werden Zeitzonen definiert mit: den spezifischen Schlüsselwörtern (MST, CET, UTC, Asian/Kolkata usw.) oder numerisch +0100 oder -0100 in Bezug auf UTC.
Weitere Filter
first |
gibt das erste "Element" einer Sequenz, eines Mappings oder eines Strings zurück |
Wenn Ihr Template enthält {{params.array|first}} und Ihre Anfrage der API enthält: “params” : Wird angezeigt als 1 |
join |
gibt einen String zurück, der aus der Verkettung der Elemente einer Sequenz besteht Das Trennzeichen zwischen Elementen ist standardmäßig ein leerer String. Sie können mithilfe des optionalen ersten Parameters ein anderes Trennzeichen definieren. |
{{ [1, 2, 3]|join }} Wird angezeigt als 123 {{ [1, 2, 3]|join: '|' }} Wird angezeigt als 1|2|3 |
last |
gibt das letzte "Element" einer Sequenz, eines Mapping oder eines Strings zurück |
{{ [1, 2, 3, 4]|last }} Wird angezeigt als 4 |
length |
gibt die Zahl der Elemente einer Sequenz oder eines Mappings zurück, oder die Länge eines Strings |
{% if users|length > 10 %} |
safe |
Ermöglicht es, anzugeben, dass für eine Zeichenfolge vor der Anzeige kein weiteres HTML-Escaping erforderlich ist
|
{{ params.htmltest | safe }} "params" :{HtmlTest: „<p>Dies ist ein Testsatz.</p>"} Zeigt in der E-Mail des Empfängers einen formatierten Paragraphen an.
{{ params.html }} Ohne den Safe-Filter wird das HTML-Tag in der E-Mail des Empfängers als normale Zeichenfolge angezeigt: <p>Die ist ein Testsatz</p> |
slice |
extrahiert Teile aus einer Sequenz, einem Mapping oder einer Zeichenfolge Dieser Filter kann konfiguriert werden, um: A. nur für die ersten "n" Elemente in einem Datenfeld eine Schleife zu erstellen B. für die Elemente zwischen zwei Positionen ("n" und "m") in einem Datenfeld eine Schleife zu erstellen Denken Sie in beiden Fällen daran, dass Elemente in einem Datenfeld einer einmaligen Positionsnummer zugewiesen sind, die erste Positionsnummer ist '0' (sie sind " mit Null indexiert"). C. Der Filter kann auch so konfiguriert werden, dass für Elemente zwischen zwei spezifischen Elementen in einem Datenfeld eine Schleife erstellt wird. |
Denken Sie in jedem Beispiel daran, dass Ihr Datenfeld Folgendes enthält: ["a","b","c","d","e","f","g","h",...] A. B. C. |
Testen des Templates und Fehlerbehebung
Um Ihr Template zu testen und grundlegende Probleme zu beheben, beziehen Sie sich bitte auf dieses Tutorial oder wenden Sie sich an unseren Kundenservice.
Gut zu wissen: Wenn Sie die Funktion "Testversand" nutzen, um eine Test-Version Ihres E-Mail-Templates zu versenden, werden die Variablen für die Kontaktattribute mit empfängerspezifischen Inhalten in der Test-E-Mail ersetzt, die Variablen für die Transaktionsparameter bleiben leer.
Weitere Dokumentation
Die von SendinBlue verwendete Templatesprache basiert auf der Templatesprache Django.
In diesem Tutorial werden die relevantesten Elemente sowie die am häufigsten benutzte Templatesprachstruktur behandelt. Nachstehend finden Sie eine umfassende Liste der unterstützten Tags und Filter. In diesen Ressourcen zu Django finden Sie weitere Details.
Alle unterstützten Tags
autoescape, comment, cycle, filter, firstof, for, if, ifchanged, now, set, spaceless, templatetag, with
Alle unterstützten Filter
escape, safe, escapejs, add, addslashes, capfirst, center, cut, date, default, default_if_none, divisibleby, first, floatformat, get_digit, iriencode, join, last, length, length_is, linebreaks, linebreaksbr, linenumbers, ljust, lower, make_list, phone2numeric, pluralize, random, removetags, rjust, slice, stringformat, striptags, time, title, truncatechars, truncatechars_html, truncatewords, truncatewords_html, upper, urlencode, urlize, urlizetrunc, wordcount, wordwrap, yesno (Referenz: https://docs.djangoproject.com/en/3.0/ref/templates/builtins/ )
Hinweis: Wenn Sie ein nützliches Element identifizieren, das noch nicht unterstützt wird, wenden Sie sich bitte an unseren Kundendienst unter contact@sendinblue.com.