

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
<a name="send-personalized-email-advanced"></a>

 Se utilizzi un *modello archiviato*, ovvero hai creato una [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html)risorsa in Amazon SES utilizzando l'`CreateEmailTemplate`operazione con l'API SES v2, 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](https://handlebarsjs.com/guide/builtin-helpers.html) in [handlebarsjs.com](http://handlebarsjs.com).

**Nota**  
SES non fa l'escape del contenuto HTML durante il rendering del modello HTML per un messaggio. Ciò significa che se includi i dati inseriti dall'utente, ad esempio da un modulo di contatto, devi farne l'escape sul lato client.

**Topics**
+ [Analisi degli attributi nidificati](#send-personalized-email-advanced-nested)
+ [Scorrimento degli elenchi](#send-personalized-email-advanced-iterating)
+ [Utilizzo di istruzioni condizionali di base](#send-personalized-email-advanced-conditionals)
+ [Creazione di funzioni parziali in linea](#send-personalized-email-advanced-inline-partials)

## Analisi degli attributi nidificati
<a name="send-personalized-email-advanced-nested"></a>

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
<a name="send-personalized-email-advanced-iterating"></a>

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 file JSON per il tuo modello non è in grado di contenere interruzioni di riga all'interno di questi valori. Se hai copiato e incollato questo esempio nel tuo file JSON, prima di procedere rimuovi le interruzioni di riga e gli spazi eccedenti dalle sezioni `HtmlPart` e `TextPart`.

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 file JSON 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.\]](http://docs.aws.amazon.com/it_it/ses/latest/dg/images/send-personalized-email-advanced-condition-interest.png)


## Utilizzo di istruzioni condizionali di base
<a name="send-personalized-email-advanced-conditionals"></a>

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 file JSON per il tuo modello non è in grado di contenere interruzioni di riga all'interno di questi valori. Se hai copiato e incollato questo esempio nel tuo file JSON, prima di procedere rimuovi le interruzioni di riga e gli spazi eccedenti dalle sezioni `HtmlPart` e `TextPart`.

L'esempio seguente mostra un file JSON 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.\]](http://docs.aws.amazon.com/it_it/ses/latest/dg/images/send-personalized-email-advanced-condition-nointerest.png)


## Creazione di funzioni parziali in linea
<a name="send-personalized-email-advanced-inline-partials"></a>

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 la stessa parziale in linea sia in HTML sia nella versione di testo dell'e-mail, è necessario definirla in entrambe le sezioni `HtmlPart` e `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 file JSON per il tuo modello non è in grado di contenere interruzioni di riga all'interno di questi valori. Se hai copiato e incollato questo esempio nel tuo file JSON, prima di procedere rimuovi le interruzioni di riga e gli spazi eccedenti da queste sezioni.