ส่วนขยายอีเมลทริกเกอร์ ( 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 ของผู้ใช้ได้ เพื่อให้ใช้งานได้ คอลเลกชันผู้ใช้ของคุณต้องเป็นไปตามเกณฑ์เหล่านี้:- คอลเลกชันจะต้องถูกคีย์บน ID ผู้ใช้ นั่นคือ ID เอกสารของเอกสารผู้ใช้แต่ละฉบับในคอลเลกชันจะต้องเป็น UID การตรวจสอบสิทธิ์ Firebase ของผู้ใช้
- เอกสารผู้ใช้แต่ละฉบับจะต้องมีช่อง
email
ที่มีที่อยู่อีเมลของผู้ใช้
ทางเลือก: ตั้งค่าคอลเลกชันเทมเพลต
คุณสามารถแสดงผลอีเมลโดยใช้ เทมเพลตแฮนด์บาร์ ในการทำเช่นนั้น คุณจะต้องมีคอลเลกชัน Cloud Firestore เพื่อเก็บเทมเพลตของคุณ
ดู ใช้เทมเพลตแฮนด์บาร์กับส่วนขยายอีเมลทริกเกอร์ เพื่อดูรายละเอียด
ติดตั้งส่วนขยาย
หากต้องการติดตั้งส่วนขยาย ให้ทำตามขั้นตอนในหน้า ติดตั้งส่วนขยาย Firebase โดยสรุป ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้:
คอนโซล 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.',
}
ฟิลด์ผู้ส่งและผู้รับ
ช่องระดับบนสุดของเอกสารจะระบุข้อมูลผู้ส่งอีเมลและผู้รับ ฟิลด์ที่มีอยู่คือ:
- จาก: ที่อยู่อีเมลของผู้ส่ง หากไม่ได้ระบุไว้ในเอกสาร ให้ใช้พารามิเตอร์ "ที่อยู่เริ่มต้นจาก" ที่กำหนดค่าไว้
- ReplyTo: ที่อยู่อีเมลตอบกลับ หากไม่ได้ระบุไว้ในเอกสาร ให้ใช้พารามิเตอร์ "ที่อยู่ตอบกลับเริ่มต้น" ที่กำหนดค่าไว้
- ถึง: ที่อยู่อีเมลผู้รับเดียวหรืออาร์เรย์ที่มีที่อยู่อีเมลผู้รับหลายราย
- toUids: อาร์เรย์ที่มี UID ของผู้รับ
- cc: ที่อยู่อีเมลของผู้รับรายเดียวหรืออาร์เรย์ที่มีที่อยู่อีเมลของผู้รับหลายราย
- ccUids: อาร์เรย์ที่มี UID ของผู้รับ CC
- สำเนาลับ: ที่อยู่อีเมลของผู้รับรายเดียวหรืออาร์เรย์ที่มีที่อยู่อีเมลของผู้รับหลายราย
- 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
ของเอกสารประกอบด้วยข้อมูลการจัดส่งดิบสำหรับอีเมล โดยทั่วไปช่องนี้ควรเติมด้วยรหัสที่เชื่อถือได้ซึ่งทำงานในเซิร์ฟเวอร์ของคุณเองหรือฟังก์ชันคลาวด์เท่านั้น (โปรดดูส่วน "กฎความปลอดภัยและการส่งอีเมล" ด้านล่าง)
คุณสมบัติที่ใช้ได้สำหรับฟิลด์ message
คือ:
- messageId: ส่วนหัวรหัสข้อความสำหรับอีเมล หากมี
- subject: เรื่องของอีเมล
- ข้อความ: เนื้อหาข้อความธรรมดาของอีเมล
- html: เนื้อหา HTML ของอีเมล
- amp: เนื้อหา AMP4EMAIL ของอีเมล
- ไฟล์แนบ: อาร์เรย์ที่มีไฟล์แนบ รองรับ ตัวเลือก Nodemailer : สตริง utf-8, ประเภทเนื้อหาที่กำหนดเอง, URL, สตริงที่เข้ารหัส, URI ข้อมูล และโหนด MIME ที่สร้างไว้ล่วงหน้า (โปรดทราบว่าอีเมลของคุณไม่สามารถเข้าถึงระบบไฟล์ของเซิร์ฟเวอร์คลาวด์)
การใช้งานขั้นสูง
เรียนรู้เกี่ยวกับการใช้ส่วนขยายนี้ขั้นสูงเพิ่มเติม: