If you specified a "Templates collection" parameter during configuration of the
extension, you can create and manage
Handlebars templates
templates for your emails.
Template collection structure
Give each document a memorable ID that you use as the
template name
in the
documents you write to your templates collection.
The template document can include any of the following fields:
- subject:
A template string for the subject of the email.
- text:
A template string for the plaintext content of the email.
- html:
A template string for the HTML content of the email.
- amp:
A template string for the
AMP4EMAIL
content of the email.
- attachments:
An array of attachments with template strings as values;
Nodemailer options
supported: utf-8 string, custom content type, URL, encoded string, data URI, and pre-generated MIME node (be aware that your email has no access to the cloud server's file system).
An example template might have an ID of
following
and content like:
{
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}}"
}
]
}
Send emails using templates
To deliver email using templates, when adding documents to your mail collection,
include a
template
field with
name
and
data
properties. For example,
using our
following
template from above:
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"
},
},
});
Template Partials
You can compose templates using reusable
partials
by specifying
{partial: true}
in the template document. Each of the standard
data fields (
subject
,
html
,
text
, and
amp
) will be defined as a partial
used only in its own environment. For example, a partial called
footer
might
have data like:
{
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"
}
In another template, include the partial by referencing its name (document ID):
<p>This is my main template content, but it will use a common footer.</p>
{{> footer }}