Trigger Email 拡張機能で Handlebars テンプレートを使用する

拡張機能の構成時に「Templates collection」パラメータを指定した場合は、Handlebars テンプレートの作成と管理を行うことによって、メールのテンプレートを利用できます。

テンプレート コレクションの構造

各ドキュメントには覚えやすい ID を指定してください。この ID は、テンプレート コレクションに書き込むドキュメントの中でテンプレート名として使用します。

テンプレート ドキュメントには次のフィールドを含めることができます。

  • subject: メールの件名のテンプレート文字列。
  • text: メールの平文コンテンツのテンプレート文字列。
  • html: メールの HTML コンテンツのテンプレート文字列。
  • amp: メールの AMP4EMAIL コンテンツのテンプレート文字列。
  • attachments: テンプレート文字列が値として含まれる添付ファイルの配列。Nodemailer のオプションがサポートされており、次の要素を使用できます。utf-8 文字列、カスタム コンテンツ タイプ、URL、エンコードされた文字列、データ URI、事前生成された MIME ノード(メールからクラウド サーバーのファイル システムにアクセスできないことに注意してください)。

ID が「following」でコンテンツが以下のようなテンプレートを例として示します。

{
  subject: "@{{username}} is now following you!",
  html: "Just writing to let you know that <code>@{{username}}</code> ({{name}}) is now following you.",
  attachments: [
    {
     filename: "{{username}}.jpg",
     path: "{{imagePath}}"
    }
  ]
}

テンプレートを使用してメールを送信する

テンプレートを使用してメールを配信するには、ドキュメントをメール コレクションに追加するときに、name プロパティと data プロパティを設定した template フィールドを含めます。上記の following テンプレートを使用する例を以下に示します。

admin
  .firestore()
  .collection("MAIL_COLLECTION")
  .add({
    toUids: ["abc123"],
    template: {
      name: "following",
      data: {
        username: "ada",
        name: "Ada Lovelace",
        imagePath: "https://example.com/path/to/file/image-name.jpg"
      },
    },
  });

テンプレートのパーシャル

再利用可能なパーシャルを使用してテンプレートを作成するには、テンプレート ドキュメント内で {partial: true} を指定します。各標準データ フィールド(subjecthtmltextamp)は、その環境でのみ使用されるパーシャルとして定義されます。footer という名前のパーシャルのデータ例を以下に示します。

{
  partial: true,
  html: "<p>This mail was sent by ExampleApp, Inc. <a href='https://example.com/unsubscribe'>Unsubscribe</a></p>",
  text: "This mail was sent by ExampleApp, Inc. Unsubscribe here: https://example.com/unsubscribe"
}

別のテンプレートにこのパーシャルを含めるには、その名前(ドキュメント ID)を指定します。

<p>This is my main template content, but it will use a common footer.</p>

{{> footer }}