
# 이메일 템플릿

`keenauth_email_template` 리소스는 커스터마이징 가능한 이메일 템플릿 하나의 게시된 콘텐츠를 관리합니다. 템플릿 하나는 한 가지 패밀리(예: `verify_email`)와 한 가지 로케일의 조합입니다. 이 리소스는 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 조각, 최대 256KiB. |
| `text_body` | Liquid 형식의 일반 텍스트 본문(필수), 최대 64KiB. |
| `from_name` | 선택 사항인 발신자 표시 이름, 최대 64자. 설정하지 않으면 애플리케이션 또는 환경 이름을 사용합니다. |
| `overwrite_pending_draft` | 선택 사항이며 기본값은 `false`입니다. 아래를 참조하십시오. |
| `version`, `latest_version` | 읽기 전용입니다. 게시된 버전과 해당 슬롯의 최신 버전입니다. |

서버는 쓰기 시점과 게시 시점에 콘텐츠를 다시 검사합니다. 검사 항목은 Liquid 샌드박스, HTML 태그 균형, 금지된 구문, 그리고 HTML 본문과 텍스트 본문 모두에 패밀리에서 요구하는 `{{ link }}` 또는 `{{ code }}`가 포함되었는지입니다.

## 변경 적용 방식

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`으로 이전에 게시된 버전으로 롤백하십시오.
