หากคุณระบุพารามิเตอร์ "คอลเล็กชันเทมเพลต" ในระหว่างการกําหนดค่าส่วนขยาย คุณสามารถสร้างและจัดการเทมเพลต Handlebars สําหรับอีเมลได้
โครงสร้างคอลเล็กชันเทมเพลต
ตั้งรหัสที่จำง่ายให้กับเอกสารแต่ละรายการ ซึ่งจะใช้เป็นชื่อเทมเพลตในเอกสารที่คุณเขียนลงในคอลเล็กชันเทมเพลต
เอกสารเทมเพลตอาจมีช่องต่อไปนี้
- subject: สตริงเทมเพลตสำหรับเรื่องของอีเมล
- text: สตริงเทมเพลตสำหรับเนื้อหาข้อความธรรมดาของอีเมล
- html: สตริงเทมเพลตสำหรับเนื้อหา HTML ของอีเมล
- amp: สตริงเทมเพลตสำหรับเนื้อหา AMP4EMAIL ของอีเมล
- attachments: อาร์เรย์ของไฟล์แนบที่มีสตริงเทมเพลตเป็นค่า ตัวเลือก Nodemailer ที่รองรับ ได้แก่ สตริง utf-8, ประเภทเนื้อหาที่กำหนดเอง, URL, สตริงที่เข้ารหัส, URI ของข้อมูล และโหนด MIME ที่สร้างขึ้นล่วงหน้า (โปรดทราบว่าอีเมลของคุณไม่มีสิทธิ์เข้าถึงระบบไฟล์ของเซิร์ฟเวอร์ระบบคลาวด์)
เทมเพลตตัวอย่างอาจมีรหัส 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}}"
}
]
}
ส่งอีเมลโดยใช้เทมเพลต
หากต้องการส่งอีเมลโดยใช้เทมเพลต เมื่อเพิ่มเอกสารลงในคอลเล็กชันจดหมาย ให้ใส่ช่อง template
ที่มีพร็อพเพอร์ตี้ name
และ data
ตัวอย่างเช่น ใช้เทมเพลต 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}
ในเอกสารเทมเพลต ช่องข้อมูลมาตรฐานแต่ละช่อง (subject
, html
, text
และ amp
) จะกำหนดเป็นข้อมูลที่ใช้ได้บางส่วนในสภาพแวดล้อมของตนเองเท่านั้น เช่น ข้อมูลบางส่วนที่ชื่อ 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"
}
ในเทมเพลตอื่น ให้ใส่ข้อมูลบางส่วนโดยอ้างอิงชื่อ (รหัสเอกสาร) ดังนี้
<p>This is my main template content, but it will use a common footer.</p>
{{> footer }}