Usar modelos do Handlebars com a extensão do acionador de e-mails

Se você tiver especificado um parâmetro "Coleção de modelos" durante a configuração da extensão, será possível criar e gerenciar modelos do Handlebars para seus e-mails.

Estrutura da coleção de modelos

Conceda a todos os documentos de um modelo um ID que seja fácil de lembrar. Ele será usado como nome do modelo no documento gravado na coleção

O modelo de documento pode incluir qualquer um destes campos:

  • subject: um modelo de string do assunto do e-mail.
  • text: um modelo de string do conteúdo de texto simples do e-mail.
  • html: um modelo de string do conteúdo HTML do e-mail.
  • amp: um modelo de string do conteúdo AMP4EMAIL do e-mail.
  • attachments: uma matriz de anexos com modelos de strings como valores. Opções do Nodemailer com suporte: string utf-8, tipo de conteúdo personalizado, URL, string codificada, URI de dados e nó MIME pré-gerado. Lembre-se de que seu e-mail não tem acesso ao sistema de arquivos do servidor da nuvem.

Um modelo de exemplo pode ter um ID de following e conteúdo como este:

{
  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}}"
    }
  ]
}

Enviar e-mails usando modelos

Para entregar e-mails usando modelos, inclua um campo template com as propriedades name e data ao adicionar documentos à sua coleção de e-mails. Por exemplo, usando nosso modelo following acima:

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"
      },
    },
  });

Modelos parciais

Para escrever modelos usando parciais reutilizáveis, especifique {partial: true} no documento do modelo. Os campos de dados padrão (subject, html, text e amp) serão definidos como parciais que são usados apenas no próprio ambiente. Por exemplo, um parcial chamado footer pode ter dados como estes:

{
  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"
}

Em outro modelo, inclua o parcial com referência ao nome (ID do documento):

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

{{> footer }}