ถ้าหากรูปแบบงานของเราจำเป็นที่จะต้องส่งข้อมูลไม่ว่าจะอยู่ในรูปแบบของเอกสารหรือรูปภาพไปยังผู้ใช้งาน ซึ่งในปัจจุบันก็จะมีรูปแบบในการสื่อสารหลายแบบ และการส่ง E-Mail ก็ถือว่าเป็นอีกรูปแบบหนึ่งที่สะดวกสบาย และใช้งานง่าย แต่ถ้าหากว่าต้องมาคอยแนบเอกสาร, กำหนดข้อมูลใหม่ในรูปแบบเดิมๆ ทุกครั้งก็ดูจะน่าเบื่อไปหน่อย วันนี้ผมเลยจะนำเสนอการตั้งค่า Node mailer สำหรับการส่ง E-Mail แบบ Auto หลังจากกรอกข้อมูล และอัพโหลดไฟล์ในแบบฟอร์มที่กำหนด โดยผมจะใช้บริการของ Gmail ในการส่งร่วมกับ Nodemailer และทั้งหมดจะเขียนใน Firebase Clound Function โดยใช้ข้อมูลที่บันทึกใน Firebase Firestore
1. ตั้งค่าใน Gmail
— ก่อนอื่นต้องมีบัญชีการใช้งานของ Gmail ที่จะใช้เป็น E-Mail สำหรับส่งก่อนนะครับ ถ้ามีแล้วเราจะต้องทำการกำหนดความปลอดภัยให้เป็นแบบ 2FA ก่อน แล้วให้ทำการกำหนด “Application Specific” ก่อนและสร้าง Application Password ขึ้นมาแบบนี้ครับ
2. ตั้งค่า gmail.email และ gmail.password
— เปิด Terminal และติดตั้ง Firebase พร้อมกับกำหนดค่าต่างๆ ของ Project ที่ต้องการให้เรียบร้อย แล้วทำการกำหนดค่าตามนี้
โดยตั้งค่า email ให้ตรงกับบัญชีที่ใช้งาน ซึ่งบัญชีที่ส่งกับผู้ใช้งานต้องเป็นบัญชีเดียวกัน และกำหนด pass word ที่ได้จากข้อ 1 ไปด้วยครับ
3. เขียน Clound Function สำหรับการส่ง E-Mail
— ก่อนอื่นติดตั้ง nodemailer ก่อน
npm install nodemailer --save
— ในไฟล์ index.js เรียกใช้งาน nodemailer
const nodemailer = require("nodemailer");
— ตั้งค่าการใช้งาน
// initial node mailer
const gmailEmail = functions.config().gmail.email;
const gmailPassword = functions.config().gmail.password;
const mailTransport = nodemailer.createTransport({
service: "gmail",
auth: {
user: gmailEmail,
pass: gmailPassword,
},
});
— ตั้งค่า Message Configuration เริ่มต้น
// set email options
const mailOptions = {
// set from same config only
from: '"NAME" <email@gmail.com>',
to: emails, // Comma separated list or an array of recipients email addresses
};
— ตั้งค่า Message Configuration โดยให้แสดงข้อความจาก HTML
mailOptions.html = 'Your HTML'
— ตั้งค่า Message Configuration โดยให้แนบเอกสาร pdf จาก Url ในฐานข้อมูล
mailOptions.attachments = [
{
filename: 'fileName',
path: 'url',
contentType: "application/pdf",
},
];
— Send Email
// send email to recipients
mailTransport
.sendMail(mailOptions)
.then((info) => {
console.log(info.response);
})
.catch((error) => {
console.error(error);
});
4. ลองดูตัวอย่าง E-Mail ที่ผู้ใช้งานได้รับ
— จะได้ส่วนเนื้อหาตาม HTML ที่กำหนด และพร้อมเอกสารแนบที่ทำการอัพโหลดไว้ในแบบฟอร์ม
ท้ายสุด สำหรับงานที่ต้องการส่ง E-Mail โดยมีรูปแบบเดิมๆ เปลี่ยนแค่ข้อมูลที่ต้องการตามแบบฟอร์มที่ให้กรอก และสามารถแนบเอกสารไปด้วยได้ แถมยังใช้งานผ่าน Gmail ได้ด้วยแบบง่ายๆ เลย แบบนี้ก็หวังว่าคงจะเป็นทางเลือกและตัวอย่างสำหรับเพื่อนๆ นำไปใช้งานนะครับ😊😊😊
โปรโมชั่น คูปองส่วนลด และดีล ที่ดีที่สุดของร้านค้าออนไลน์กว่า 300 แบรนด์พร้อมรับเงินคืนจาก ShopBack
https://bit.ly/3c4tlmV
Ruk-Com จดโดเมน-เช่าโฮสต์ ราคาประหยัด พร้อมให้บริการใน 1 นาที
http://bit.ly/36q8A12