ส่วนขยาย Trigger Email (firestore-send-email) ช่วยให้คุณส่ง
อีเมลโดยอัตโนมัติตามเอกสารในคอลเล็กชัน Cloud Firestore การเพิ่มเอกสารลงในคอลเล็กชันจะเป็นตัวกระตุ้นให้ส่วนขยายนี้ส่งอีเมลที่สร้างจากฟิลด์ของเอกสาร ฟิลด์ระดับบนสุดของเอกสารจะระบุผู้ส่งและ
ผู้รับอีเมล รวมถึง to, cc, และ bcc ตัวเลือก (แต่ละตัวเลือกรองรับ UID) ฟิลด์ message ของเอกสารจะระบุองค์ประกอบอื่นๆ ของอีเมล เช่น บรรทัดเรื่องและเนื้อหาของอีเมล (ข้อความธรรมดาหรือ HTML)
ต่อไปนี้คือตัวอย่างการเขียนเอกสารพื้นฐานที่จะกระตุ้นให้ส่วนขยายนี้ทำงาน
admin.firestore().collection('mail').add({
to: 'someone@example.com',
message: {
subject: 'Hello from Firebase!',
html: 'This is an <code>HTML</code> email body.',
},
})
นอกจากนี้ คุณยังกำหนดค่าส่วนขยายนี้ให้แสดงอีเมลโดยใช้ เทมเพลต Handlebars ได้ด้วย (ไม่บังคับ)
การตั้งค่าก่อนการติดตั้ง
ทำตามขั้นตอนต่อไปนี้ก่อนติดตั้งส่วนขยาย
ตั้งค่าบริการอีเมลขาออก
เมื่อติดตั้งส่วนขยาย Trigger Email คุณจะต้องระบุรายละเอียดการเชื่อมต่อและการตรวจสอบสิทธิ์ของเซิร์ฟเวอร์ SMTP ซึ่งส่วนขยายจะใช้เพื่อส่งอีเมล โดยปกติแล้วบริการนี้จะให้บริการโดยบริการส่งอีเมล เช่น Sendgrid, Mailgun หรือ Mailchimp Transactional Email แต่ก็อาจเป็นเซิร์ฟเวอร์ที่คุณเรียกใช้เองก็ได้
สร้างคอลเล็กชันเอกสารอีเมล
ส่วนขยาย Trigger Email จะคอยตรวจสอบเอกสารใหม่ใน Cloud Firestore คอลเล็กชันที่คุณระบุ เมื่อพบเอกสารใหม่ ส่วนขยายจะส่งอีเมลตามฟิลด์ของเอกสาร คุณสามารถใช้ Cloud Firestore คอลเล็กชันใดก็ได้เพื่อวัตถุประสงค์นี้ โดยตัวอย่างในหน้านี้ใช้คอลเล็กชัน ชื่อ
emailตั้งค่ากฎความปลอดภัยสำหรับคอลเล็กชันเอกสารอีเมล
คุณสามารถใช้ส่วนขยายนี้เพื่อกระตุ้นการส่งอีเมลจากแอปพลิเคชันไคลเอ็นต์ได้โดยตรง อย่างไรก็ตาม คุณควรควบคุมการเข้าถึงคอลเล็กชันของไคลเอ็นต์อย่างระมัดระวังเพื่อหลีกเลี่ยงการละเมิดที่อาจเกิดขึ้น (คุณไม่ต้องการให้ผู้ใช้ส่งอีเมลแบบสุ่มจากอีเมลของบริษัท)
กฎความปลอดภัยจะแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่คุณควรตรวจสอบเสมอว่าอีเมลจะส่งถึงผู้รับที่ต้องการเท่านั้น และเนื้อหาแบบอิสระจะถูกจำกัดไว้ให้น้อยที่สุด เทมเพลตช่วยได้ในกรณีนี้ โดยคุณสามารถใช้กฎความปลอดภัยเพื่อตรวจสอบว่าข้อมูลที่ป้อนลงในเทมเพลตตรงกับสิ่งที่คุณคาดหวังว่าผู้ใช้ควรได้รับอนุญาตให้กระตุ้น
ไม่บังคับ: ตั้งค่าคอลเล็กชันผู้ใช้
ในการใช้งานพื้นฐานของส่วนขยายนี้ คุณจะระบุผู้รับอีเมล โดยระบุอีเมลของผู้รับในฟิลด์
to,cc, และbccของ เอกสารข้อความ หรือหากคุณมีฐานข้อมูลผู้ใช้ใน Cloud Firestore คุณสามารถระบุผู้รับโดยใช้ UID ของผู้ใช้ได้ คอลเล็กชันผู้ใช้ต้องเป็นไปตามเกณฑ์ต่อไปนี้จึงจะใช้งานได้- คอลเล็กชันต้องมีคีย์เป็นรหัสผู้ใช้ นั่นคือ รหัสเอกสารของเอกสารผู้ใช้แต่ละรายการในคอลเล็กชันต้องเป็น UID การตรวจสอบสิทธิ์ Firebase ของผู้ใช้Firebase Authentication
- เอกสารผู้ใช้แต่ละรายการต้องมีฟิลด์
emailที่มีอีเมลของผู้ใช้
ไม่บังคับ: ตั้งค่าคอลเล็กชันเทมเพลต
คุณสามารถแสดงอีเมลโดยใช้ เทมเพลต Handlebars หากต้องการทำเช่นนั้น คุณจะต้องมีคอลเล็กชัน Cloud Firestore เพื่อเก็บ เทมเพลต
ดูรายละเอียดได้ที่หัวข้อใช้เทมเพลต Handlebars กับส่วนขยาย Trigger Email
ติดตั้งส่วนขยาย
หากต้องการติดตั้งส่วนขยาย ให้ทำตามขั้นตอนในหน้า ติดตั้ง Firebase Extension โดยสรุป ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
Firebase คอนโซล: คลิกปุ่มต่อไปนี้
CLI: เรียกใช้คำสั่งต่อไปนี้
firebase ext:install firebase/firestore-send-email --project=projectId-or-alias
เมื่อติดตั้งส่วนขยาย ระบบจะแจ้งให้คุณระบุข้อมูลการเชื่อมต่อ SMTP และคอลเล็กชัน Cloud Firestore ที่คุณตั้งค่าไว้ก่อนหน้านี้
ใช้ส่วนขยาย
หลังจากติดตั้งแล้ว ส่วนขยายนี้จะตรวจสอบการเขียนเอกสารทั้งหมดลงในคอลเล็กชันที่คุณกำหนดค่าไว้ ระบบจะส่งอีเมลตามเนื้อหาในฟิลด์ของเอกสาร ฟิลด์ระดับบนสุดจะระบุผู้ส่งและผู้รับอีเมล ฟิลด์ message จะมีรายละเอียดของอีเมลที่จะส่ง รวมถึงเนื้อหาของอีเมล
ตัวอย่าง: ส่งอีเมล
หากต้องการส่งข้อความธรรมดา ให้เพิ่มเอกสารลงในคอลเล็กชันข้อความโดยมีฟิลด์ to และฟิลด์ message ที่มีเนื้อหาต่อไปนี้
to: ['someone@example.com'],
message: {
subject: 'Hello from Firebase!',
text: 'This is the plaintext section of the email body.',
html: 'This is the <code>HTML</code> section of the email body.',
}
ฟิลด์ผู้ส่งและผู้รับ
ฟิลด์ระดับบนสุดของเอกสารจะให้ข้อมูลผู้ส่งและผู้รับอีเมล ฟิลด์ที่ใช้ได้มีดังนี้
- from: อีเมลของผู้ส่ง หากไม่ได้ระบุไว้ในเอกสาร ระบบจะใช้พารามิเตอร์ "อีเมล FROM เริ่มต้น" ที่กำหนดค่าไว้
- replyTo: อีเมลสำหรับตอบกลับ หากไม่ได้ระบุไว้ในเอกสาร ระบบจะใช้พารามิเตอร์ "ที่อยู่สำหรับตอบกลับเริ่มต้น" ที่กำหนดค่าไว้
- to: อีเมลของผู้รับรายเดียวหรืออาร์เรย์ที่มีอีเมลของผู้รับหลายราย
- toUids: อาร์เรย์ที่มี UID ของผู้รับ
- cc: อีเมลของผู้รับรายเดียวหรืออาร์เรย์ที่มีอีเมลของผู้รับหลายราย
- ccUids: อาร์เรย์ที่มี UID ของผู้รับสำเนาถึง (CC)
- bcc: อีเมลของผู้รับรายเดียวหรืออาร์เรย์ที่มีอีเมลของผู้รับหลายราย
- bccUids: อาร์เรย์ที่มี UID ของผู้รับสำเนาลับ (BCC)
- headers: ออบเจ็กต์ของฟิลด์ส่วนหัวเพิ่มเติม (เช่น
{"X-Custom-Header": "value", "X-Second-Custom-Header": "value"})
หมายเหตุ: ตัวเลือก toUids, ccUids และ bccUids จะส่งอีเมลตาม
UID ของผู้ใช้ที่เชื่อมโยงกับอีเมลภายในเอกสาร Cloud Firestore หากต้องการใช้ตัวเลือกผู้รับเหล่านี้ คุณต้องระบุคอลเล็กชัน Cloud Firestore สำหรับพารามิเตอร์ "คอลเล็กชันผู้ใช้" ของส่วนขยาย จากนั้นส่วนขยายจะอ่านฟิลด์
email สำหรับ UID แต่ละรายการที่ระบุในฟิลด์ toUids, ccUids, และ/หรือ bccUids
ฟิลด์ข้อความ
ฟิลด์ message ของเอกสารจะมีข้อมูลการส่งแบบดิบสำหรับอีเมล โดยทั่วไปแล้วฟิลด์นี้ควรป้อนข้อมูลโดยโค้ดที่เชื่อถือได้ซึ่งทำงานในเซิร์ฟเวอร์ของคุณเองหรือ Cloud Functions เท่านั้น (โปรดดูส่วน "กฎความปลอดภัยและการส่งอีเมล" ด้านล่าง)
พร็อพเพอร์ตี้ที่ใช้ได้สำหรับฟิลด์ message มีดังนี้
- messageId: ส่วนหัวของรหัสข้อความสำหรับอีเมล (หากมี)
- subject: เรื่องของอีเมล
- text: เนื้อหาข้อความธรรมดาของอีเมล
- html: เนื้อหา HTML ของอีเมล
- amp: เนื้อหา AMP4EMAIL ของอีเมล
- attachments: อาร์เรย์ที่มีไฟล์แนบ ตัวเลือก Nodemailer ที่รองรับ ได้แก่ สตริง utf-8, ประเภทเนื้อหาที่กำหนดเอง, URL, สตริงที่เข้ารหัส, URI ข้อมูล และโหนด MIME ที่สร้างไว้ล่วงหน้า (โปรดทราบว่าอีเมลของคุณไม่มีสิทธิ์เข้าถึงระบบไฟล์ของเซิร์ฟเวอร์ในระบบคลาวด์)
การใช้งานขั้นสูง
ดูข้อมูลเกี่ยวกับการใช้งานขั้นสูงเพิ่มเติมของส่วนขยายนี้