การใช้ส่วนขยายอีเมลทริกเกอร์

ส่วนขยาย 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 ได้ด้วย (ไม่บังคับ)

การตั้งค่าก่อนการติดตั้ง

ทำตามขั้นตอนต่อไปนี้ก่อนติดตั้งส่วนขยาย

  1. ตั้งค่าบริการอีเมลขาออก

    เมื่อติดตั้งส่วนขยาย Trigger Email คุณจะต้องระบุรายละเอียดการเชื่อมต่อและการตรวจสอบสิทธิ์ของเซิร์ฟเวอร์ SMTP ซึ่งส่วนขยายจะใช้เพื่อส่งอีเมล โดยปกติแล้วบริการนี้จะให้บริการโดยบริการส่งอีเมล เช่น Sendgrid, Mailgun หรือ Mailchimp Transactional Email แต่ก็อาจเป็นเซิร์ฟเวอร์ที่คุณเรียกใช้เองก็ได้

  2. สร้างคอลเล็กชันเอกสารอีเมล

    ส่วนขยาย Trigger Email จะคอยตรวจสอบเอกสารใหม่ใน Cloud Firestore คอลเล็กชันที่คุณระบุ เมื่อพบเอกสารใหม่ ส่วนขยายจะส่งอีเมลตามฟิลด์ของเอกสาร คุณสามารถใช้ Cloud Firestore คอลเล็กชันใดก็ได้เพื่อวัตถุประสงค์นี้ โดยตัวอย่างในหน้านี้ใช้คอลเล็กชัน ชื่อ email

  3. ตั้งค่ากฎความปลอดภัยสำหรับคอลเล็กชันเอกสารอีเมล

    คุณสามารถใช้ส่วนขยายนี้เพื่อกระตุ้นการส่งอีเมลจากแอปพลิเคชันไคลเอ็นต์ได้โดยตรง อย่างไรก็ตาม คุณควรควบคุมการเข้าถึงคอลเล็กชันของไคลเอ็นต์อย่างระมัดระวังเพื่อหลีกเลี่ยงการละเมิดที่อาจเกิดขึ้น (คุณไม่ต้องการให้ผู้ใช้ส่งอีเมลแบบสุ่มจากอีเมลของบริษัท)

    กฎความปลอดภัยจะแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่คุณควรตรวจสอบเสมอว่าอีเมลจะส่งถึงผู้รับที่ต้องการเท่านั้น และเนื้อหาแบบอิสระจะถูกจำกัดไว้ให้น้อยที่สุด เทมเพลตช่วยได้ในกรณีนี้ โดยคุณสามารถใช้กฎความปลอดภัยเพื่อตรวจสอบว่าข้อมูลที่ป้อนลงในเทมเพลตตรงกับสิ่งที่คุณคาดหวังว่าผู้ใช้ควรได้รับอนุญาตให้กระตุ้น

  4. ไม่บังคับ: ตั้งค่าคอลเล็กชันผู้ใช้

    ในการใช้งานพื้นฐานของส่วนขยายนี้ คุณจะระบุผู้รับอีเมล โดยระบุอีเมลของผู้รับในฟิลด์ to, cc, และ bcc ของ เอกสารข้อความ หรือหากคุณมีฐานข้อมูลผู้ใช้ใน Cloud Firestore คุณสามารถระบุผู้รับโดยใช้ UID ของผู้ใช้ได้ คอลเล็กชันผู้ใช้ต้องเป็นไปตามเกณฑ์ต่อไปนี้จึงจะใช้งานได้

    • คอลเล็กชันต้องมีคีย์เป็นรหัสผู้ใช้ นั่นคือ รหัสเอกสารของเอกสารผู้ใช้แต่ละรายการในคอลเล็กชันต้องเป็น UID การตรวจสอบสิทธิ์ Firebase ของผู้ใช้Firebase Authentication
    • เอกสารผู้ใช้แต่ละรายการต้องมีฟิลด์ email ที่มีอีเมลของผู้ใช้
  5. ไม่บังคับ: ตั้งค่าคอลเล็กชันเทมเพลต

    คุณสามารถแสดงอีเมลโดยใช้ เทมเพลต Handlebars หากต้องการทำเช่นนั้น คุณจะต้องมีคอลเล็กชัน Cloud Firestore เพื่อเก็บ เทมเพลต

    ดูรายละเอียดได้ที่หัวข้อใช้เทมเพลต Handlebars กับส่วนขยาย Trigger Email

ติดตั้งส่วนขยาย

หากต้องการติดตั้งส่วนขยาย ให้ทำตามขั้นตอนในหน้า ติดตั้ง Firebase Extension โดยสรุป ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้

เมื่อติดตั้งส่วนขยาย ระบบจะแจ้งให้คุณระบุข้อมูลการเชื่อมต่อ 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 ที่สร้างไว้ล่วงหน้า (โปรดทราบว่าอีเมลของคุณไม่มีสิทธิ์เข้าถึงระบบไฟล์ของเซิร์ฟเวอร์ในระบบคลาวด์)

การใช้งานขั้นสูง

ดูข้อมูลเกี่ยวกับการใช้งานขั้นสูงเพิ่มเติมของส่วนขยายนี้