> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-docs-event-stream-action-templates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# メールテンプレートをカスタマイズする

> テンプレート言語Liquidの構文を使ってメールをカスタマイズする方法について説明します。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  カスタマイズしたメールを送信するには、プロバイダーまたはテンプレートレベルで差出人のアドレスを構成する必要があります。詳細については、「[テンプレートのフィールドを構成する](#configure-template-fields)」の「 **差出人のアドレスを構成する** 」セクションをお読みください。
</Callout>

メールをカスタマイズできるようにするには、サードパーティサービス（Amazon SES、Mandrill、SendGrid、SparkPost、Mailgun、またはカスタムSMTPプロバイダーなど）を使って、自分のメールプロバイダーを構成する必要があります。詳細については、「[外部SMTPプロバイダーを構成する](/docs/ja-jp/customize/email/smtp-email-providers)」をお読みください。

Auth0では、DashboardでHTMLベースの[メール](https://manage.auth0.com/#/emails)をカスタマイズするほか、Liquidを使って一部のコンテキスト属性を含むテンプレートを作成することができます。詳細については、「[メールテンプレートでのLiquid構文の使用](/docs/ja-jp/customize/email/email-templates/use-liquid-syntax-in-email-templates)」をお読みください。これには、現在のアプリケーションまたはユーザーのコンテキストへの参照を含むことができます。

テンプレートタイプごとに使用できるテンプレートは1つのみです。プレーンテキスト/テキストベースのメールはサポートされていません。

メールテンプレートごとに **［From Address（差出人アドレス）］** 、 **［Subject（件名）］** 、 **［Message（メッセージ）］** 本文をカスタマイズできます。Liquid構文を使ってコンテンツを動的に生成し、多数のコンテキスト変数にアクセスすることができます。メールメッセージの作成時に、これらの変数は関連する値に置き換えられます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  **［Try（テスト）］** ボタンをクリックすると、Auth0から、テナントの（フレンドリー名ではない）生の名前を基にしたデフォルトのアプリ名がメールで届きます。異なるアプリに対してテンプレートをテストするには、フローの実行に使うサンプルユーザーを作成します。

  ただし、特定のアプリケーションやユーザーに対しては、Auth0 Management APIの[メールアドレスの確認メール送信](https://auth0.com/docs/api/management/v2#!/Jobs/post_verification_email)エンドポイントを使って手動で確認メールをトリガーできます。
</Callout>

## 共通変数

**［From Address（差出人アドレス）］** 、 **［Subject（件名）］** 、 **［Message（メッセージ）］** フィールドでLiquid構文を使用する場合、以下の共通変数にアクセスできます。

* `application`オブジェクト。以下に挙げた標準クライアントプロパティにアクセスできます。

  * `application.name`
  * `application.clientID`
  * `application.metadata`
* `connection.name`（ **［Multi-factor Enrollment Email（多要素登録メール）］** の場合を除く）
* `user`オブジェクト。以下に挙げたプロパティにアクセスできます。

  * `user.email`
  * `user.email_verified`
  * `user.picture`
  * `user.nickname`
  * `user.given_name`
  * `user.family_name`
  * `user.name`
  * `user.app_metadata` - ユーザーのサポートプランやセキュリティロール、アクセス制御グループといった情報を格納します。これらの情報は、アプリケーションの機能の仕組みやユーザーがアクセスできる対象など、ユーザーのコア機能に影響を与える可能性があります。
  * `user.user_metadata` - ユーザーのコア機能に影響しないユーザー属性（ユーザー設定など）を格納します。
* テナント関連情報（[［Tenant Settings（テナント設定）］で定義](https://manage.auth0.com/#/tenant)）

  * `tenant` - 未加工のテナント名
  * `friendly_name`
  * `support_email`
  * `support_url`

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  以下のユーザープロパティは信頼できないため、Liquidの`escape`関数をパイプでつなげなければなりません（`{{ user.name | escape }}`）：

  * user.picture
  * user.nickname
  * user.given\_name
  * user.family\_name
  * user.name

  また、ユーザーが提供した情報を含む`user.user_metadata`プロパティは、エスケープしなければなりません。
</Callout>

以下のメールテンプレートは、[組織](/docs/ja-jp/manage-users/organizations/organizations-overview)のためにさらにカスタマイズすることができます。

* **Welcome（ようこそ）** ：エンドユーザーのメールアドレスが検証された後、またはメール検証が無効の場合にはサインアップ（または初めてログイン）したときに、エンドユーザーが受信します。
* **Password Change（パスワード変更）** ：エンドユーザーがパスワードの変更を要求した際に受信します。パスワードリセットページにリダイレクトするリンクが含まれています。
* **Blocked Account（アカウントのブロック）** ：ユーザーが同じIPアドレスから10回以上ログインしようとして失敗したときに、エンドユーザーが受信します。
* **Breached Password Alerts（侵害されたパスワードアラート）** ：サードパーティーによって漏洩したパスワードを使ってアプリケーションにアクセスしようとしていることがAuth0で検出されるときに、エンドユーザーが受信します。
* **Invite User（ユーザー招待）** ：エンドユーザーが組織に招待された際に受信します。カスタム招待ページにリダイレクトするリンクが含まれています。詳細については、「[組織メンバーを招待する](/docs/ja-jp/manage-users/organizations/configure-organizations/invite-members)」を参照してください。

ユーザーが[組織](/docs/ja-jp/manage-users/organizations/organizations-overview)からログインするときは、このほかにも以下に挙げた変数を使用することができます。

* `organization.id`
* `organization.display_name`
* `organization.name`
* `organization.metadata`
* `organization.branding.logo_url`
* `organization.branding.colors.primary`
* `organization.branding.colors.page_background`

変数はLiquidの`{{ variable_name }}`構文を使って参照されます。例：

`Hello {{ user.name }}.Welcome to {{ application.name }} from {{ friendly_name }}.`

`user`オブジェクトに使用できる属性は、使用される接続のタイプによって異なります。各メールテンプレートは、特定のテンプレートに適した追加の変数を定義します。

ユーザーがリンクをクリックしてアクションを実行する必要があるメールでは、アクションを実行した後に、 **［URL Lifetime（URLライフタイム）］** と **［Redirect To（リダイレクト先）］** URLの宛先も構成することができます。Liquid構文は **［Redirect To（リダイレクト先）］** URLフィールドでもサポートされていますが、サポートされている変数は以下の3つのみです。

* `application.name`
* `application.clientID`
* `application.callback_domain`

## テンプレートフィールドを構成する

以下のフィールドを構成する必要があります。

<Accordion title="1 送信元アドレス">
  Auth0からメールを受信すると、送信者として **送信元アドレス** フィールドにメールアドレスが表示されます。メールテンプレートの **送信元アドレス** フィールドを設定しない場合、Auth0はお使いの [メールプロバイダー](/docs/ja-jp/customize/email/smtp-email-providers)に設定された **送信元** フィールドのメールアドレスを使用します。

  <Warning>
    セキュリティ上の理由で、カスタマイズしたメールは`@auth0.com`を含まない送信元ア​ドレスからしか送信できません。`@auth0.com`のメールアドレスを入力すると、デフォルトのメールが引き続き送信され​、カスタマイズした内容は無視されます。プライベートクラウドをご利用の場合は、類似のドメイン拒否リストを構成できます。
  </Warning>

  **送信元アドレス** フィールドはテンプレートの共通変数すべてに対応していますが、以下が最も一般的に使用されています。

  * `application.name`
  * `friendly_name`（テナントが定義したフレンドリー名）

  これらの変数を使用して、 **差出人アドレス** の表示名を、ユーザーがサインアップしたアプリケーションに関連するものに設定することができます。たとえば、フィールドには`<support@fabrikamcorp.com>`ではなく、`{{ application.name }} <support@fabrikamcorp.com>`と表示されます。

  Auth0から送信者に代わってデジタル署名済みのメールを送れるようにするには、Sender Policy Framework（SPF）（詳しくは、Wikipediaで「[Sender Policy Framework (SPF)](https://en.wikipedia.org/wiki/Sender_Policy_Framework)」をお読みください）とDomainKeys Identified Mail （詳しくは、Wikipediaで「[DomainKeys Identified Mail (DKIM)](https://en.wikipedia.org/wiki/DKIM)」をお読みください）のDNSレコードをドメインのゾーンファイルに追加する必要があります。これらのレコードがないと、メールがユーザーの迷惑メールフォルダに振り分けられてしまう可能性があります。さらに、次のような **差出人アドレス** がユーザーに表示される場合があります。

  `MyApp support@mail128-21.atl41.mandrillapp.com on behalf of MyApp support@fabrikamcorp.com`

  ##### SPFの構成

  SPFを構成するには、ドメインのゾーンファイルにTXTレコードを追加します。プロバイダーによっては、ホスト名を`@`に設定するか、空のままにする必要があります。レコードの値は次のようにします。

  `"v=spf1 include:spf.mandrillapp.com -all"`

  既にSPFレコードがある場合は、単に`include:spf.mandrillapp.com`を既存のレコードに追加することができます。

  ##### DKIMの構成

  DKIMを構成するには、ドメインのゾーンファイルにTXTレコードを追加します。このドメインはメールの送信に使用するものにしてください。たとえば、[Mandrill](https://www.mandrill.com/signup/)を使用している場合、このレコードのホスト名は`mandrill._domainkey`に、値は次のように設定します。

  ```text lines theme={null}
  v=DKIM1; k=rsa; 
  p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrLHiExVd55zd/IQ/J/mRwSRMAocV/hMB3jXwaHH36d9NaVynQFYV8NaWi69c1veUtRzGt7yAioXqLj7Z4TeEUoOLgrKsn8YnckGs9i3B3tVFB+Ch/4mPhXWiNfNdynHWBcPcbJ8kjEQ2U8y78dHZj1YeRXXVvWob2OaKynO8/lQIDAQAB;
  ```
</Accordion>

<Accordion title="2 件名">
  **Subject（件名）** フィールドは、テンプレートに共通する次を含むすべての変数に対応しています。

  * `application.name`
  * `user.email`（および`user`オブジェクトのその他のプロパティ）

  **Subject（件名）** フィールドが空の場合、Auth0は送信するメールの種類に応じてこのテキストを自動入力します。たとえば、ある件名行が「メールを確認してください。」であるとします。

  ##### 多言語の件名行

  ユーザーが選択した言語は、`user.user_metadata`と、Subject（件名）フィールドに使用されるLiquid構文に格納することができます。

  例：

  ```liquid lines theme={null}
  {% assign language = request_language %}
    {% if language %}
      {% assign language = request_language | slice: 0,2 %}
    {% endif%}
  {% if language == 'es' %}
    Cuenta de Example: bloqueada
  {% elsif language == 'de' %}
    Ihr Example wurde gesperrt
  {% elsif language == 'fr' %}
    Compte Example bloqué
  {% elsif language == 'ja' %}
    Example アカウントがブロックされました
  {% elsif language == 'pt' %}
    Conta da Example bloqueada
  {% elsif language == 'zh' %}
    Example　帐户被阻止
  {% else %}
    Example account blocked
  {% endif %}
  ```
</Accordion>

<Accordion title="3 URLライフタイム">
  **検証メール** 、 **パスワード変更** 、 **ブロックされたアカウントのメール** には、ユーザーがサインアップ時にメールアドレスを確認したり、パスワードの変更を確認したり、ブロックされたアカウントのブロックを解除したりできるリンクが含まれています。

  セキュリティ上の理由から、このリンクのライフタイムは変更が可能です。デフォルトのライフタイムは432,000秒（5日）です。

  期限切れリンクがクリックされたときに **リダイレクト先** URLが設定されていると、ユーザーは設定された **リダイレクト先** URLにリダイレクトされます。クエリ文字列に次のテキストが追加されます。

  `http://myapplication.com/my_page/?email=john%contoso.com&message=Access%20expired.&success=false`
</Accordion>

<Accordion title="4 リダイレクト先URL">
  **リダイレクト先** URLは、関連アクション（アカウントの確認、パスワードのリセット、アカウントのブロック解除）が実行された後にユーザーをリダイレクトする任意の移動先です。

  ユニバーサルログインクラシックエクスペリエンスでは、パスワードのリセット後にリダイレクトされるURLを指定できます。Auth0はそのURLに`success`インジケーターと`message`を送信します。これら2つのパラメーターの詳細については、[メールテンプレートの説明](/docs/ja-jp/customize/email/email-templates/email-template-descriptions)をご覧ください。

  New Universal Loginエクスペリエンスでは、ユーザーがパスワードのリセットに成功した場合、Auth0はユーザーをデフォルトのログインルートにリダイレクトします。そうでない場合、Auth0はユニバーサルログインフローの一部としてエラーを処理し、メールテンプレートに入力されたリダイレクトURLを無視します。

  **リダイレクト先** URLでは、次の3つの変数のみが使用できます。

  * `application.name`（またはその同義語の`client.name`）
  * `application.clientID`
  * `application.callback_domain`（またはその同義語の`client.callback_domain`）

  `application.callback_domain`変数には、アプリケーションの **Allowed Callback URL（許可されているコールバックURL）** リストに記載されている **最初の** URLのオリジンが含まれます。これにより、次のような構文を使用して、アクションをトリガーしたアプリケーションのパスにユーザーをリダイレクトすることができます。

  `{{ application.callback_domain }}/result_page`

  この変数は`callback_domain`と呼ばれますが、実際にはオリジンであるため、ドメイン（例：`https://myapp.com`）に加えてプロトコルが含まれていることに注意してください。

  アプリケーションに複数の **Allowed Callback URL（許可されているコールバックURL）** が設定されている場合、Auth0はリストに載っている最初のURLを使用します。Liquid構文を使用して、デフォルトのオリジンを指定することもできます。

  `{{ application.callback_domain | default: "https://my-default-domain.com" }}/result_page`

  ##### URLへの動的リダイレクト

  アプリケーション名に基づいて、別のリダイレクト先URLをセットアップできます。例：

  `{% if application.name == 'JWT.io' %} https://jwt.io {% else %} https://auth0.com {% endif %}`

  アプリケーション名はセキュリティ上エンコードされているため、常にエンコードされた値を使用してください（特に、アプリケーション名にエンコード後に変更される文字が含まれている場合）。たとえば、`My App`の場合は、代わりに`My%20App`を使用します。

  シングルページアプリケーション（SPA）の場合、 **リダイレクト先** URLには、アプリ内の特定の状態/ビューのハッシュとルート、それに続くルートパラメーターを含めることができます。その場合、 **リダイレクト先** URLで次の問題が発生する可能性があります。

  `http://localhost:3000/#/register`

  これにより、ユーザは次のURLにリダイレクトされます：

  ```http lines theme={null}
  http://localhost:3000/?supportSignUp=true
    &supportForgotPassword=true
    &email=john.doe%40exampleco.com
    &message=Your%20email%20was%20verified.%20You%20can%20continue%20using%20the%20application.
    &success=true#/register
  ```

  これは、期待されるURLの順序を`scheme|authority|path|query|fragment`として定義している、インターネット標準（詳細はインターネット技術特別調査委員会（IETF、Internet Engineering Task Force）作成の「[RFC 3986](https://tools.ietf.org/html/rfc3986#section-3)」仕様をお読みください）に記述されています。ただし、SPAフレームワーク（Angularなど）では通常、`scheme|authority|path|fragment|query`形式（末尾にクエリ文字列パラメータ付き）のURLが期待されます。これにより、アプリケーションは正常な状態に入りません。たとえば、上記のURLでは、アプリは`/#/register`ではなく`/`にルーティングされます。

  SPAフレームワークのこの制限を回避するには、リダイレクトのためのSPAアプリルートを保持する`route`パラメーターを含んだサーバー側のCallback URLを、 **リダイレクト先** URLとして使用することが推奨されます。このサーバー側のURLに入ったら、残りのクエリ文字列とともに`route`パラメーターに保存されているSPAルートにリダイレクトします。

  1. サーバー側のURLを、リダイレクトのSPAルートを記録する`route`パラメーター付きの **リダイレクト先** URLとして追加します。
     `http://localhost:3001/register?route=register`
  2. URLから`route`やその他のパラメーターを読み取り、`route`パラメーターで指定されたSPAルートにリダイレクトするサーバ側のルートコントローラーを作成します。Auth0から受け取った他のパラメーターを忘れずに追加します。

     ```javascript lines theme={null}
     var express = require('express');
     var router = express.Router();
     var qs = require('qs'); // to read query string params and stringify them

     router.get('/register', function(req, res, next) {
       var route = req.query.route; // retrieve the route param that contains the SPA client side route user needs to be redirected to.

       delete req.query.route; // remove it from query params.
       res.redirect('http://localhost:3000/#/' + route + '?' +  qs.stringify(req.query)); // Send a 302 redirect for the expected route
     });

     module.exports = router;
     ```
</Accordion>

<Accordion title="5 メッセージ本文">
  メッセージ本文にはHTMLコンテンツがありますが、現在サポートされているテンプレート構文はLiquid構文です。すべての共通変数と個々のテンプレートで定義された変数が使用できます。

  ##### 多言語メールテンプレート

  Liquid構文をユーザーオブジェクトの`user_metadata.lang`プロパティと併用すると、ユーザーが希望する言語に基づいてコンテンツを変更できます。たとえば、イタリア語の場合は、[アクションを使用](/docs/ja-jp/customize/actions/actions-overview)して`user_metadata.lang`プロパティを`it`に設定することができます。その言語プロパティにアクションなどを設定する必要があります。

  ##### Liquidテンプレート変数のデバッグ

  テンプレートの開発を支援するために、カスタム`{% debug %}` liquidタグが追加されました。このタグは、テンプレートが表示されたときにテンプレートで使用できるテンプレート変数の概要を出力します。このタグは、「ライブ」のテンプレートから必ず削除してください。
</Accordion>

## もっと詳しく

* [メールテンプレートの説明](/docs/ja-jp/customize/email/email-templates/email-template-descriptions)
* [アカウントのブロック通知メールをカスタマイズする](/docs/ja-jp/customize/email/customize-blocked-account-emails)
* [メールのハンドリングをカスタマイズする](/docs/ja-jp/customize/email/manage-email-flow)
* [MFA用メール通知を構成する](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-email-notifications-for-mfa)
* [電子メールテンプレートでLiquid構文を使用](/docs/ja-jp/customize/email/email-templates/use-liquid-syntax-in-email-templates)
