หากคุณระบุพารามิเตอร์ "คอลเลกชันเทมเพลต" ในระหว่างการกำหนดค่าส่วนขยาย คุณสามารถสร้างและจัดการเทมเพลต เทมเพลตแฮนด์บาร์ สำหรับอีเมลของคุณได้
โครงสร้างการรวบรวมเทมเพลต
มอบ ID ที่น่าจดจำให้กับแต่ละเอกสารที่คุณใช้เป็น ชื่อเทมเพลต ในเอกสารที่คุณเขียนลงในคอลเลกชันเทมเพลตของคุณ
เอกสารเทมเพลตสามารถมีฟิลด์ใดก็ได้ต่อไปนี้:
- เรื่อง: สตริงเทมเพลตสำหรับเรื่องของอีเมล
- ข้อความ: สตริงเทมเพลตสำหรับเนื้อหาข้อความธรรมดาของอีเมล
- html: สตริงเทมเพลตสำหรับเนื้อหา HTML ของอีเมล
- amp: สตริงเทมเพลตสำหรับเนื้อหา AMP4EMAIL ของอีเมล
- ไฟล์แนบ: อาร์เรย์ของไฟล์แนบที่มีสตริงเทมเพลตเป็นค่า รองรับ ตัวเลือก 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}}"
}
]
}
ส่งอีเมลโดยใช้เทมเพลต
ในการส่งอีเมลโดยใช้เทมเพลต เมื่อเพิ่มเอกสารไปยังคอลเลกชันเมลของคุณ ให้รวม 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"
}
ในเทมเพลตอื่น ให้รวมบางส่วนโดยอ้างอิงชื่อ (ID เอกสาร):
<p>This is my main template content, but it will use a common footer.</p>
{{> footer }}