
# Plantillas de correo electrónico

El recurso `keenauth_email_template` gestiona el contenido publicado de una plantilla de correo electrónico personalizable: una familia (por ejemplo `verify_email`) en un idioma. Requiere el plan Startup o superior (de lo contrario, `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"
}
```

| Atributo | Descripción |
|---|---|
| `family`, `locale` | La ranura. Cambiar cualquiera de los dos gestiona otra plantilla. |
| `subject` | Liquid, texto plano, hasta 200 caracteres, sin saltos de línea. |
| `html` | Fragmento HTML de Liquid, hasta 256 KiB. |
| `text_body` | Cuerpo de texto plano en Liquid (obligatorio), hasta 64 KiB. |
| `from_name` | Nombre visible del remitente opcional, hasta 64 caracteres. Si no se define, se usa el nombre de la aplicación o del entorno. |
| `overwrite_pending_draft` | Opcional, por defecto `false`. Véase más abajo. |
| `version`, `latest_version` | Solo lectura. La versión publicada y la versión más reciente de la ranura. |

El servidor comprueba el contenido al escribirlo y de nuevo al publicarlo: sandbox de Liquid, HTML equilibrado, construcciones prohibidas y la presencia de `{{ link }}` o `{{ code }}`, según requiera la familia, tanto en el HTML como en el cuerpo de texto.

## Cómo se aplica un cambio

1. `PUT` escribe el contenido como una nueva versión borrador. `If-Match` es la versión más reciente de la ranura según la última lectura (`"0"` para una ranura sin versiones).
2. `POST …:publish` publica esa versión. La versión anterior se archiva y permanece en el historial (se conservan las 50 versiones más recientes más la publicada).

El recurso lee la versión **publicada**. Una versión publicada o revertida en el panel aparece como desviación en el siguiente `plan`.

## Borradores pendientes

Un borrador más reciente que la versión publicada (guardado en el panel o dejado por una publicación fallida) nunca se sobrescribe en silencio:

- Un borrador con el mismo contenido que su configuración se publica sin escribir otra versión. Esto también reintenta una publicación fallida.
- Un borrador distinto hace que el cambio falle con `Pending email template draft`. Publíquelo o revíselo en el panel, o defina `overwrite_pending_draft = true` para escribir una versión más reciente encima. El borrador anterior permanece en el historial, pero ya no puede publicarse.
- `plan` muestra una advertencia mientras exista un borrador pendiente.

Si alguien escribe en la plantilla entre `plan` y `apply`, la API responde `412` y no se cambia nada. Ejecute `plan` de nuevo.

## Crear, importar y destruir

- Una creación adopta una plantilla publicada con el mismo contenido. Si la ranura ya tiene una plantilla publicada con otro contenido, el proveedor no la sobrescribe: impórtela con `tofu import keenauth_email_template.verify verify_email/en` y revise el plan.
- Destruir solo elimina el recurso del estado. La API no tiene eliminación, por lo que la plantilla publicada y su historial no cambian. Volver a la plantilla predeterminada del sistema no está disponible a través de la API; para cambiar lo que se envía, edite la plantilla o ejecute `keenauth email-templates rollback` para una versión publicada anterior.
