将 Handlebars 模板与触发器电子邮件扩展程序搭配使用

如果您在配置扩展程序期间指定了“模板集合”参数,则可以为电子邮件创建和管理 Handlebars 模板

模板集合结构

为每个文档指定一个容易记住的 ID,以便在您写入模板集合的文档中用作模板名称。

模板文档可以包含以下任何字段:

  • subject:一个模板字符串,用于电子邮件主题。
  • text:一个模板字符串,用于电子邮件的纯文本内容。
  • html:一个模板字符串,用于电子邮件 HTML 内容。
  • amp:一个模板字符串,用于电子邮件的 AMP4EMAIL 内容。
  • attachments:附件的数组,以模板字符串作为值;支持的 Nodemailer 选项:utf-8 字符串、自定义内容类型、网址、编码字符串、数据 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}}"
    }
  ]
}

使用模板发送电子邮件

如需使用模板传送电子邮件,请在向邮件集合添加文档时包含一个具有 namedata 属性的 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 }}