メールテンプレート運用¶
概要¶
Vendure EmailPlugin のメールテンプレートを共通仕様で管理し、言語別テンプレートを扱えるようにします。テンプレートはすべて MJML で統一し、共通のヘッダー/フッターを利用します。
テンプレート配置¶
- ルート:
apps/vendure-server/static/email/templates/ - 種別ごとのテンプレート:
apps/vendure-server/static/email/templates/<type>/ - 共通パーシャル:
apps/vendure-server/static/email/templates/partials/
実装済みテンプレート一覧¶
| イベント | ハンドラー名 | テンプレートディレクトリ | 概要 |
|---|---|---|---|
| 注文確定 | orderConfirmationHandler |
order-confirmation |
注文完了時に送信される確認メール |
| メールアドレス確認 | emailVerificationHandler |
email-verification |
会員登録時のアドレス有効性確認 |
| パスワードリセット | passwordResetHandler |
password-reset |
パスワード忘失時の再設定用リンク |
| アドレス変更確認 | emailAddressChangeHandler |
email-address-change |
メールアドレス変更時の確認 |
| パスワード発行 | passwordIssuedHandler |
password-issued |
管理者によるパスワード手動発行通知 |
| 注文キャンセル | orderCancelledHandler |
order-cancelled |
注文がキャンセルされた際の通知 |
| 会員情報変更 | customerProfileUpdatedHandler |
customer-updated |
プロフィール情報が変更された際のセキュリティ通知 |
| 会員登録完了 | registrationCompletedHandler |
registration-completed |
アドレス確認後の本登録完了通知 |
| 出荷完了 | shipmentCompletedHandler |
shipping-completed |
商品発送時の通知(追跡番号含む) |
| ログイン失敗 | loginFailureHandler |
login-failure |
管理者へのログイン失敗通知(セキュリティ通知) |
| 共通ヘッダー | partial: header |
partials/header.hbs |
全メール共通のヘッダー partial (DB 編集可) |
| 共通フッター | partial: footer |
partials/footer.hbs |
全メール共通のフッター partial (DB 編集可) |
言語別テンプレート¶
body.hbs(デフォルト/日本語) を用意する- 必要に応じて
body.en.hbs等を追加可能(LanguageAwareTemplateLoaderにより自動解決)
共通仕様¶
- すべてのメールは MJML で統一する
{{> header }}/{{> footer }}を共通利用する- 件名は
apps/vendure-server/src/vendure-config.shared.tsで統一管理する - テンプレートプレビューの件名は
@ritsubi/plugins内のEmailPreviewServiceと同期する
Vendure Dashboard 編集¶
- 管理画面(Vendure Dashboard)の
メールテンプレートから本文・件名を編集可能(EmailPreviewPluginによる拡張)。 - 変更内容は DB に保存され、送信時は DB の内容が優先 される。
- 保存済みの内容はプレビューとテスト送信で確認できる。
- 編集対象は
typeとlanguageCodeの組み合わせ(既定はja)。 - 部分テンプレート(
header/footerpartial)も DB を SSOT として管理する。 DB に保存が無い場合はapps/vendure-server/static/email/templates/partials/のファイルへ fallback する (DbAwareTemplateLoader)。初期値は migration20260520110000_seed_email_partial_templates.tsで seeding 済み。 - 画面の閲覧は
ReadSettings、保存/テスト送信はUpdateSettingsが必要。 - 各テンプレート種別に応じたテンプレートヒント (
TEMPLATE_HINTS_BY_TYPE/packages/plugins/src/standard-extensions/admin-extensions/dashboard/email-templates/email-template-detail.helpers.ts) を編集画面から挿入できる。header/footerpartial も含めて全種別で利用可能なヒントが整備されている。 - 注文確認メールのお客様番号は
{{ order.customer.customFields.customerCode }}を使う。プレビュー用のbuildTemplateVars()も同じ path にサンプル値を持つため、編集画面のプレビューとテスト送信で解決確認できる。
アーキテクチャ¶
メール関連のコアロジックは @ritsubi/plugins に集約されています。
DbAwareTemplateLoader: DB に保存されたカスタムテンプレートを優先し、存在しない場合にファイルから読み込むフォールバックロジックを提供します。header/footerpartial も同じ仕組みで DB → ファイル fallback の順に解決されます。JapaneseHandlebarsMjmlGenerator: MJML のコンパイルと Handlebars ヘルパー(formatDate等)を提供します。EmailPreviewPlugin: 管理画面向けのプレビュー・編集 API を提供します。
多言語対応の方針¶
- 言語ごとのテンプレートファイルを追加するだけで拡張可能
- 既定言語は日本語とする