
# Template email

La risorsa `keenauth_email_template` gestisce il contenuto pubblicato di un singolo template email personalizzabile: una famiglia (per esempio `verify_email`) in una locale. Richiede il piano Startup o superiore (altrimenti `403 plan_feature_unavailable`).

```terraform
resource "keenauth_email_template" "verify" {
  family    = "verify_email"
  locale    = "en"
  subject   = "Confirm your email"
  html      = "<p>Confirm your email address: <a href=\"{{ link }}\">Confirm</a></p>"
  text_body = "Confirm your email address: {{ link }}"
  from_name = "Acme"
}
```

| Attribute | Description |
|---|---|
| `family`, `locale` | Lo slot. Modificare uno dei due gestisce un template diverso. |
| `subject` | Liquid, testo semplice, fino a 200 caratteri, senza interruzioni di riga. |
| `html` | Frammento HTML Liquid, fino a 256 KiB. |
| `text_body` | Corpo in testo semplice Liquid (obbligatorio), fino a 64 KiB. |
| `from_name` | Nome visualizzato del mittente, facoltativo, fino a 64 caratteri. Se non impostato viene usato il nome dell'applicazione o dell'ambiente. |
| `overwrite_pending_draft` | Facoltativo, il valore predefinito è `false`. Vedi sotto. |
| `version`, `latest_version` | Sola lettura. La versione pubblicata e la versione più recente dello slot. |

Il server verifica il contenuto in scrittura e di nuovo alla pubblicazione: sandbox di Liquid, HTML bilanciato, costrutti vietati e il `{{ link }}` o `{{ code }}` richiesto dalla famiglia sia nel corpo HTML sia in quello di testo.

## Come viene applicata una modifica

1. `PUT` scrive il contenuto come nuova versione in bozza. `If-Match` è la versione più recente dello slot dall'ultima lettura (`"0"` per uno slot senza versioni).
2. `POST …:publish` pubblica quella versione. La versione precedente viene archiviata e resta nella cronologia (vengono conservate le 50 versioni più recenti più quella pubblicata).

La risorsa legge la versione **pubblicata**. Una versione pubblicata o ripristinata dalla dashboard compare come drift nel `plan` successivo.

## Bozze in sospeso

Una bozza più recente della versione pubblicata (salvata nella dashboard o lasciata da una pubblicazione non riuscita) non viene mai sovrascritta in silenzio:

- Una bozza con lo stesso contenuto della tua configurazione viene pubblicata senza scrivere un'altra versione. Questo riprova anche una pubblicazione non riuscita.
- Una bozza diversa fa fallire la modifica con `Pending email template draft`. Pubblicala o rivedila nella dashboard, oppure imposta `overwrite_pending_draft = true` per scrivere sopra di essa una versione più recente. La vecchia bozza resta nella cronologia ma non può più essere pubblicata.
- `plan` mostra un avviso finché esiste una bozza in sospeso.

Se qualcuno scrive sul template tra `plan` e `apply`, l'API risponde con `412` e non cambia nulla. Esegui di nuovo `plan`.

## Creazione, import e distruzione

- Una creazione adotta un template pubblicato con lo stesso contenuto. Se lo slot ha già un template pubblicato con altro contenuto, il provider non lo sovrascrive: importalo con `tofu import keenauth_email_template.verify verify_email/en` e rivedi il piano.
- Destroy rimuove solo la risorsa dallo state. L'API non ha una cancellazione, quindi il template pubblicato e la sua cronologia restano invariati. Il ripristino del default di sistema non è disponibile tramite API; per cambiare ciò che viene inviato, modifica il template oppure esegui `keenauth email-templates rollback` per una versione pubblicata precedente.
