Personalizzazione avanzata dell'email - Amazon Simple Email Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Personalizzazione avanzata dell'email

Se utilizzi un modello archiviato, ovvero hai creato una Templaterisorsa in Amazon SES utilizzando l'CreateEmailTemplateoperazione con la SES v2API, puoi sfruttare il sistema Handlebars per creare modelli che includono funzionalità avanzate, come attributi annidati, iterazione di array, istruzioni condizionali di base e creazione di parziali in linea. In questa sezione vengono forniti alcuni esempi di queste caratteristiche.

Handlebars include altre caratteristiche oltre quelle documentate in questa sezione. Per ulteriori informazioni, consulta la pagina relativa agli Helper integrati in handlebarsjs.com.

Nota

SESnon sfugge al HTML contenuto durante la visualizzazione del modello per un messaggio. HTML Ciò significa che se includi i dati inseriti dall'utente, ad esempio da un modulo di contatto, devi farne l'escape sul lato client.

Analisi degli attributi nidificati

Handlebars include il supporto per percorsi nidificati, semplificando la gestione dei dati complessi dei clienti e facendo quindi riferimento a quei dati nei tuoi modelli e-mail.

Per esempio, puoi organizzare i dati dei destinatari in diverse categorie generali. In ciascuna di quelle categorie, puoi includere informazioni dettagliate. L'esempio di codice che segue mostra un esempio di questa struttura per un singolo destinatario:

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

Nei tuoi modelli di e-mail, puoi riferirti agli attributi nidificati fornendo il nome dell'attributo padre, seguito da un punto (.), seguito dal nome dell'attributo per il quale si desidera includere il valore. Ad esempio, se utilizzi la struttura di dati illustrata nell'esempio precedente e desideri includere il nome di ciascun destinatario nel modello e-mail, includi il seguente testo nel tuo modello e-mail: Hello {{contact.firstName}}!

Handlebars è in grado di analizzare percorsi nidificati in diversi livelli, il che significa che disponi di una certa flessibilità nella modalità di strutturazione dei tuoi dati di modello.

Scorrimento degli elenchi

La funzione helper each scorre gli elementi in una matrice. Il codice seguente è un esempio di un modello e-mail che utilizza la funzione helper each per creare un elenco dettagliato degli interessi di ogni destinatario.

{ "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}}" } }
Importante

Nel precedente esempio di codice, i valori degli attributi HtmlPart e TextPart includono interruzioni di riga per rendere più semplice la lettura dell'esempio. Il JSON file del modello non può contenere interruzioni di riga all'interno di questi valori. Se hai copiato e incollato questo esempio nel tuo JSON file, rimuovi le interruzioni di riga e gli spazi aggiuntivi dalle TextPart sezioni HtmlPart e prima di procedere.

Dopo che hai creato il modello, puoi utilizzare l'operazione SendEmail o SendBulkEmail per inviare e-mail ai destinatari utilizzando questo modello. Se ogni destinatario dispone di almeno un valore nell'oggetto Interests, questi ricevono un'e-mail che include un elenco dettagliato dei loro interessi. L'esempio seguente mostra un JSON file che può essere utilizzato per inviare e-mail a più destinatari utilizzando il modello precedente:

{ "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\":[]}" }

Quando invii un'e-mail ai destinatari elencati nell'esempio precedente utilizzando l'operazione SendBulkEmail, questi ricevono un messaggio simile all'esempio illustrato nella seguente immagine:

Preferences notification listing Sports, Travel, and Cooking as selected interests.

Utilizzo di istruzioni condizionali di base

Questa sezione si basa sull'esempio descritto nella sezione precedente. L'esempio nella sezione precedente utilizza l'helper each per scorrere un elenco di interessi. Tuttavia, i destinatari per i quali non sono specificati interessi ricevono un'e-mail contenente un elenco vuoto. Utilizzando l'helper {{if}}, puoi formattare l'e-mail in modo diverso se un determinato attributo è presente nel modello dati. Il codice seguente utilizza l'helper {{if}} per visualizzare l'elenco puntato dalla sezione precedente se la matrice Subscription contiene qualsiasi valore. Se la matrice è vuota, viene visualizzato un altro blocco di testo.

{ "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}}" } }
Importante

Nel precedente esempio di codice, i valori degli attributi HtmlPart e TextPart includono interruzioni di riga per rendere più semplice la lettura dell'esempio. Il JSON file del modello non può contenere interruzioni di riga all'interno di questi valori. Se hai copiato e incollato questo esempio nel tuo JSON file, rimuovi le interruzioni di riga e gli spazi aggiuntivi dalle TextPart sezioni HtmlPart e prima di procedere.

L'esempio seguente mostra un JSON file che può essere utilizzato per inviare e-mail a più destinatari utilizzando il modello precedente:

{ "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 questo esempio il destinatario, il cui modello di dati ha incluso un elenco di interessi, riceve la stessa e-mail come l'esempio illustrato nella sezione precedente. Il destinatario con un modello di dati che non include alcun interesse, riceve comunque un'e-mail che somiglia all'esempio illustrato nella seguente immagine:

Email message with header "Your Preferences" and text about updating subscription preferences.

Creazione di funzioni parziali in linea

Puoi utilizzare funzioni parziali in linea per semplificare modelli che includono stringhe ripetute. Ad esempio, potresti creare una funzione in linea che include il nome del destinatario e, se è disponibile, il cognome aggiungendo il codice seguente all'inizio del tuo modello:

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

Il carattere per la nuova riga (\n) è necessario per separare i blocchi {{inline}} dal contenuto nel tuo modello. Non viene eseguito il rendering della nuova riga nell'output finale.

Una volta creata la funzione parziale fullName, puoi includerla in qualsiasi punto del modello anteponendo al nome della parziale il segno "maggiore di" (>) seguito da uno spazio, come nell'esempio seguente: {{> fullName}}. Le funzioni parziali in linea non vengono trasferite tra le parti dell'e-mail. Ad esempio, se desideri utilizzare lo stesso parziale in linea sia nella versione testuale dell'HTMLe-mail che in quella testuale, devi definirlo sia nelle sezioni che nelle sezioniHtmlPart. TextPart

Puoi utilizzare anche le funzioni parziali durante lo scorrimento delle matrici. Puoi utilizzare il codice seguente per creare un modello che usi la funzione parziale in linea fullName. In questo esempio, la parziale in linea si applica sia al nome del destinatario che a una vasta gamma di altri nomi:

{ "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}}" } }
Importante

Nel precedente esempio di codice, i valori degli attributi HtmlPart e TextPart includono interruzioni di riga per rendere più semplice la lettura dell'esempio. Il JSON file del modello non può contenere interruzioni di riga all'interno di questi valori. Se hai copiato e incollato questo esempio nel tuo JSON file, rimuovi le interruzioni di riga e gli spazi aggiuntivi da queste sezioni.