ส่วนขยายอีเมลทริกเกอร์ (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.',
},
})
คุณสามารถเลือกที่จะกำหนดค่าส่วนขยายนี้เพื่อแสดงอีเมลโดยใช้ เทมเพลตแฮนเดิล
การตั้งค่าก่อนการติดตั้ง
ก่อนติดตั้งส่วนขยาย ให้ทำตามขั้นตอนต่อไปนี้
ตั้งค่าบริการอีเมลขาออก
เมื่อคุณติดตั้งส่วนขยายอีเมลทริกเกอร์ คุณจะต้องระบุ การเชื่อมต่อและการตรวจสอบสิทธิ์ของเซิร์ฟเวอร์ SMTP ใช้ส่งอีเมล ขั้นตอนนี้มักมาจากบริการนำส่งทางอีเมล เช่น Sendgrid, Mailgun หรือ Mailchimp Transactional Email แต่อาจ จะเป็นเซิร์ฟเวอร์ที่คุณเป็นผู้ดูแลเอง
สร้างคอลเล็กชันเอกสารอีเมล
ส่วนขยายอีเมลของทริกเกอร์จะคอยตรวจจับเอกสารใหม่ใน Cloud Firestore คอลเล็กชันที่คุณระบุ เมื่อพบเอกสารใหม่ ส่วนขยาย ส่งอีเมลโดยอิงตามช่องของเอกสาร คุณใช้ Cloud Firestore ใดก็ได้ เก็บรวบรวมเพื่อจุดประสงค์นี้ ตัวอย่างในหน้านี้ใช้คอลเล็กชัน ชื่อ
email
ตั้งกฎความปลอดภัยสำหรับการรวบรวมเอกสารทางอีเมล
ใช้ส่วนขยายนี้เพื่อทริกเกอร์การส่งอีเมลได้โดยตรงจากลูกค้า แอปพลิเคชัน อย่างไรก็ตาม คุณควรควบคุมการเข้าถึงของลูกค้าสำหรับ เพื่อหลีกเลี่ยงการละเมิดที่อาจเกิดขึ้น (คุณไม่ต้องการให้ผู้ใช้ส่ง อีเมลที่กำหนดเองจากที่อยู่ของบริษัท)
กฎความปลอดภัยจะแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่คุณควร คุณต้องตรวจสอบเสมอว่าอีเมลถูกส่งไปยังผู้รับที่ต้องการเท่านั้น เนื้อหารูปแบบอิสระจะเก็บไว้น้อยที่สุด เทมเพลตช่วยคุณได้ สามารถใช้กฎความปลอดภัยเพื่อยืนยันว่าข้อมูลที่กำลังป้อนลงใน เทมเพลตตรงกับความคาดหวังของคุณเกี่ยวกับสิ่งที่ผู้ใช้ควรได้รับอนุญาต ทริกเกอร์
ไม่บังคับ: ตั้งค่าคอลเล็กชันผู้ใช้
ในส่วนการใช้งานพื้นฐานของส่วนขยายนี้ ให้ระบุผู้รับอีเมล โดยระบุอีเมลในช่อง
to
,cc
และbcc
ของ เอกสารข้อความ อีกวิธีหนึ่งคือ หากคุณมีฐานข้อมูลผู้ใช้อยู่ใน Cloud Firestore คุณจะระบุผู้รับได้โดยใช้ UID สำหรับกรณีนี้ คอลเล็กชันของผู้ใช้ต้องเป็นไปตามเกณฑ์ต่อไปนี้- ต้องเชื่อมโยงกับ User-ID ในคอลเล็กชัน นั่นคือ รหัสเอกสารของ เอกสารผู้ใช้ในคอลเล็กชันต้องเป็น UID ของ Firebase Authentication ของผู้ใช้
- เอกสารของผู้ใช้แต่ละรายต้องมีช่อง
email
ที่มีอีเมลของผู้ใช้ อีเมล
ไม่บังคับ: ตั้งค่าคอลเล็กชันเทมเพลต
คุณแสดงผลอีเมลได้โดยใช้เทมเพลตแฮนเดิล ในการดำเนินการดังกล่าว คุณจะต้องมีคอลเล็กชัน Cloud Firestore เพื่อเก็บ เทมเพลต
โปรดดูหัวข้อใช้เทมเพลตแฮนด์บาร์กับส่วนขยายอีเมลทริกเกอร์ เพื่อดูรายละเอียด
ติดตั้งส่วนขยาย
หากต้องการติดตั้งส่วนขยาย ให้ทำตามขั้นตอนใน ติดตั้ง 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
- สำเนาลับ: อีเมลของผู้รับรายเดียวหรืออาร์เรย์ที่มีอีเมลของผู้รับหลายรายการ
- bccUids: อาร์เรย์ที่มี UID ของผู้รับสำเนาลับ
- 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 ที่สร้างไว้ล่วงหน้า (โปรดทราบว่าอีเมลของคุณไม่มีสิทธิ์เข้าถึงระบบไฟล์ของเซิร์ฟเวอร์ระบบคลาวด์)
การใช้งานขั้นสูง
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ส่วนขยายนี้ขั้นสูง