ส่วนขยายอีเมลทริกเกอร์ ( 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.',
},
})
คุณยังสามารถเลือกที่จะกำหนดค่าส่วนขยายนี้เพื่อแสดงอีเมลโดยใช้เทมเพลต แฮนด์ บาร์
การตั้งค่าก่อนการติดตั้ง
ก่อนที่คุณจะติดตั้งส่วนขยาย ให้ทำตามขั้นตอนเหล่านี้:
ตั้งค่าบริการจดหมายขาออกของคุณ
เมื่อคุณติดตั้งส่วนขยาย Trigger Email คุณจะต้องระบุรายละเอียดการเชื่อมต่อและการรับรองความถูกต้องของเซิร์ฟเวอร์ SMTP ซึ่งส่วนขยายนี้ใช้เพื่อส่งอีเมล โดยทั่วไปจะมีให้บริการโดยบริการจัดส่งอีเมล เช่น Sendgrid, Mailgun หรือ Mailchimp Transactional Email แต่ก็อาจเป็นเซิร์ฟเวอร์ที่คุณดำเนินการเอง
สร้างคอลเลกชันเอกสารอีเมล
ส่วนขยายอีเมลทริกเกอร์จะรับฟังเอกสารใหม่ในคอลเล็กชัน Cloud Firestore ที่คุณระบุ เมื่อพบเอกสารใหม่ ส่วนขยายจะส่งอีเมลตามฟิลด์ของเอกสาร คุณสามารถใช้คอลเลกชัน Cloud Firestore เพื่อจุดประสงค์นี้ ตัวอย่างในหน้านี้ใช้คอลเล็กชันชื่อ
email
ตั้งกฎความปลอดภัยสำหรับการรวบรวมเอกสารอีเมลของคุณ
ส่วนขยายนี้สามารถใช้เพื่อทริกเกอร์การส่งอีเมลโดยตรงจากแอปพลิเคชันไคลเอ็นต์ อย่างไรก็ตาม คุณควรควบคุมการเข้าถึงคอลเลกชั่นของลูกค้าอย่างรอบคอบเพื่อหลีกเลี่ยงการละเมิดที่อาจเกิดขึ้น (คุณไม่ต้องการให้ผู้ใช้สามารถส่งอีเมลจากที่อยู่บริษัทของคุณได้ตามอำเภอใจ!)
กฎความปลอดภัยจะแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่คุณควรตรวจสอบให้แน่ใจเสมอว่าอีเมลถูกส่งไปยังผู้รับที่ต้องการเท่านั้น และรักษาเนื้อหาในรูปแบบอิสระให้น้อยที่สุด เทมเพลตสามารถช่วยได้ที่นี่ คุณสามารถใช้กฎความปลอดภัยเพื่อตรวจสอบว่าข้อมูลที่เติมลงในเทมเพลตนั้นตรงกับความคาดหวังของคุณสำหรับสิ่งที่ผู้ใช้ควรได้รับอนุญาตให้ทริกเกอร์
ทางเลือก: ตั้งค่าคอลเลกชันผู้ใช้
ภายใต้การใช้งานส่วนขยายนี้ขั้นพื้นฐาน คุณจะระบุผู้รับอีเมลโดยระบุที่อยู่อีเมลในช่อง
to
cc
และbcc
ของเอกสารข้อความ อีกทางเลือกหนึ่ง หากคุณมีฐานข้อมูลผู้ใช้ใน Cloud Firestore คุณสามารถระบุผู้รับโดยใช้ UID ของผู้ใช้ เพื่อให้ใช้งานได้ คอลเลกชันผู้ใช้ของคุณต้องตรงตามเกณฑ์เหล่านี้:- คอลเลกชันจะต้องถูกป้อนรหัสผู้ใช้ นั่นคือ 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.',
}
เขตข้อมูลผู้ส่งและผู้รับ
ฟิลด์ระดับบนสุดของเอกสารจะระบุข้อมูลผู้ส่งอีเมลและผู้รับ ฟิลด์ที่ใช้ได้คือ:
- จาก: ที่อยู่อีเมลของผู้ส่ง หากไม่ได้ระบุไว้ในเอกสาร ให้ใช้พารามิเตอร์ "Default FROM address" ที่กำหนดค่าไว้
- replyTo: ที่อยู่อีเมลตอบกลับ หากไม่ได้ระบุไว้ในเอกสาร ให้ใช้พารามิเตอร์ "ที่อยู่ตอบกลับเริ่มต้น" ที่กำหนดค่าไว้
- ถึง: ที่อยู่อีเมลของผู้รับเดียวหรืออาร์เรย์ที่มีที่อยู่อีเมลของผู้รับหลายคน
- toUids: อาร์เรย์ที่มี UID ของผู้รับ
- cc: ที่อยู่อีเมลของผู้รับเดียวหรืออาร์เรย์ที่มีที่อยู่อีเมลของผู้รับหลายคน
- ccUids: อาร์เรย์ที่มี UID ของผู้รับ CC
- สำเนาลับ: ที่อยู่อีเมลของผู้รับเดียวหรืออาร์เรย์ที่มีที่อยู่อีเมลของผู้รับหลายคน
- bccUids: อาร์เรย์ที่มี UID ของผู้รับ BCC
- ส่วนหัว: ออบเจ็กต์ของช่องส่วนหัวเพิ่มเติม (เช่น
{"X-Custom-Header": "value", "X-Second-Custom-Header": "value"}
)
หมายเหตุ: ตัวเลือก toUids
, ccUids
และ bccUids
ส่งอีเมลตาม UID ของผู้ใช้ที่คีย์ไปยังที่อยู่อีเมลภายในเอกสาร Cloud Firestore หากต้องการใช้ตัวเลือกผู้รับเหล่านี้ คุณต้องระบุคอลเล็กชัน Cloud Firestore สำหรับพารามิเตอร์ "Users collection" ของส่วนขยาย ส่วนขยายสามารถอ่านฟิลด์ email
สำหรับแต่ละ UID ที่ระบุใน toUids
, ccUids
และ/หรือ bccUids
ช่องข้อความ
ช่อง message
ของเอกสารมีข้อมูลการจัดส่งดิบสำหรับอีเมล โดยทั่วไปช่องนี้ควรเติมด้วยโค้ดที่เชื่อถือได้ซึ่งทำงานในเซิร์ฟเวอร์หรือ Cloud Functions ของคุณเองเท่านั้น (โปรดดูส่วน "กฎความปลอดภัยและการส่งอีเมล" ด้านล่าง)
คุณสมบัติที่ใช้ได้สำหรับฟิลด์ message
คือ:
- messageId: ส่วนหัวของ ID ข้อความสำหรับอีเมล ถ้ามี
- เรื่อง: เรื่องของอีเมล
- ข้อความ: เนื้อหาข้อความธรรมดาของอีเมล
- html: เนื้อหา HTML ของอีเมล
- amp: เนื้อหา AMP4EMAIL ของอีเมล
- ไฟล์แนบ: อาร์เรย์ที่มีไฟล์แนบ รองรับตัวเลือก Nodemailer : สตริง utf-8, ประเภทเนื้อหาที่กำหนดเอง, URL, สตริงที่เข้ารหัส, URI ข้อมูล และโหนด MIME ที่สร้างไว้ล่วงหน้า (โปรดทราบว่าอีเมลของคุณไม่มีสิทธิ์เข้าถึงระบบไฟล์ของเซิร์ฟเวอร์คลาวด์)
การใช้งานขั้นสูง
เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ส่วนขยายนี้ขั้นสูง: