
# メールテンプレート

`keenauth_email_template` リソースは、カスタマイズ可能なメールテンプレート 1 件の公開済みの内容を管理します。管理対象は、1 つのファミリ（例：`verify_email`）と 1 つのロケールの組み合わせです。このリソースには Startup プラン以上が必要です（それ以外の場合は `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"
}
```

| 属性 | 説明 |
|---|---|
| `family`、`locale` | 管理対象のスロットです。どちらかを変更すると、別のテンプレートを管理することになります。 |
| `subject` | Liquid 形式のプレーンテキストで、最大 200 文字、改行は不可です。 |
| `html` | Liquid 形式の HTML フラグメントで、最大 256 KiB です。 |
| `text_body` | Liquid 形式のプレーンテキスト本文（必須）で、最大 64 KiB です。 |
| `from_name` | 任意の送信者表示名で、最大 64 文字です。未設定の場合は、アプリケーション名または環境名が使用されます。 |
| `overwrite_pending_draft` | 任意で、デフォルトは `false` です。詳細は後述します。 |
| `version`、`latest_version` | 読み取り専用です。公開済みのバージョンと、そのスロットの最新バージョンを示します。 |

サーバーは書き込み時と公開時の両方で内容を検証します。検証項目は、Liquid サンドボックス、HTML の閉じタグの整合性、禁止された構文、そしてファミリに必要な `{{ link }}` または `{{ code }}` が HTML 本文とテキスト本文の両方に含まれているかどうかです。

## 変更の適用方法

1. `PUT` で内容を新しいドラフトバージョンとして書き込みます。`If-Match` には、最後の読み取り時点でのスロットの最新バージョンを指定します（バージョンのないスロットの場合は `"0"`）。
2. `POST …:publish` で、そのバージョンを公開します。以前のバージョンはアーカイブされ、履歴に残ります（最新 50 バージョンと公開済みバージョンが保持されます）。

このリソースは**公開済み**のバージョンを読み取ります。ダッシュボードで公開またはロールバックされたバージョンは、次の `plan` でドリフトとして表示されます。

## 保留中のドラフト

公開済みバージョンより新しいドラフト（ダッシュボードで保存されたもの、または公開失敗により残ったもの）は、黙って上書きされることはありません。

- 構成と同じ内容のドラフトは、別のバージョンを書き込まずに公開されます。失敗した公開の再試行にもなります。
- 内容の異なるドラフトがある場合、変更は `Pending email template draft` で失敗します。ダッシュボードで公開またはレビューするか、`overwrite_pending_draft = true` を設定して、より新しいバージョンで上書きしてください。古いドラフトは履歴に残りますが、もう公開することはできなくなります。
- 保留中のドラフトが存在する間、`plan` は警告を表示します。

`plan` と `apply` の間にテンプレートへ書き込みがあった場合、API は `412` を返し、何も変更されません。その場合は `plan` を再度実行してください。

## 作成、インポート、削除

- 作成時には、同じ内容の公開済みテンプレートが取り込まれます。スロットに別の内容の公開済みテンプレートがすでにある場合、プロバイダはそれを上書きしません。`tofu import keenauth_email_template.verify verify_email/en` でインポートし、plan を確認してください。
- 削除は state からリソースを削除するだけです。API には削除機能がないため、公開済みのテンプレートとその履歴はそのまま残ります。API からシステムのデフォルトに戻すことはできません。送信内容を変更するには、テンプレートを編集するか、`keenauth email-templates rollback` で以前に公開したバージョンに戻してください。
