SMPT ย่อมาจาก Simple Mail Transfer Protocol เป็นโปรโตคอลมาตรฐานที่ใช้ในการส่งอีเมล์ โดยผู้ให้บริการอีเมล์ทุกเจ้าจะรองรับ SMTP อยู่แล้ว การส่งเมล์เหมาะกับการแจ้งเตือน หรือส่งรายงานที่อาจจะไม่ต้องเร่งด่วนมาก เช่น ส่งสรุปรายงานผู้เข้าใช้บริการเครื่องกดบัตรคิว ส่งรายงานอุณหภูมิเฉลี่ยของโรงเรือนปลูกพืช ส่งรายงานการเข้า-ออกงานของพนักงาน เป็นต้น โดยการส่งเมล์รองรับทั้งการส่งข้อความ โค้ด HTML, CSS และแนบไฟล์
ในบทความนี้เราจะมาลองเขียนโค้ดให้ ESP32 ส่งเมล์ โดยใช้ SMTP ด้วยไลบารี่ ESP-Mail-Client
บทความนี้ใช้บอร์ด IOXESP32 (บอร์ด ESP32 ที่ ArtronShop พัฒนาขึ้น) ในการทดสอบ
ผู้ให้บริการเมล์ทุกรายรองรับการเชื่อมต่อผ่าน SMTP อยู่แล้ว เพียงแต่หลายรายปิดใช้งานไว้เพื่อความปลอดภัย แต่ละรายมีขั้นตอนการเปิดใช้งานที่ต่างกันดังนี้
SMTP เป็นโปรโตคอลที่ Gmail รองรับ แต่เนื่องจากเป็นโปรโตคอลรูปแบบเก่าที่ Google ไม่สนับสนุนให้ใช้งานแล้ว จำเป็นต้องทำขั้นตอนเปิดใช้งานก่อน ดังนี้
1) เปิดใช้การยืนยันแบบ 2 ขั้นตอน
เข้าไปที่ บัญชี Google คลิกที่เมนู ความปลอดภัย เลื่อนหาหัวข้อ วิธีลงชื่อเข้าใช้ Google กดที่ การยืนยันแบบ 2 ขั้นตอน
จากนั้นทำตามขั้นตอนที่แนะนำบนหน้าจอ (แต่ละคนอาจขึ้นไม่เหมือนกัน) หลังจบขึ้นตอน จะมีเครื่องหมายถูกสีเขียวขึ้น (ดังรูป)
2) สร้างรหัสผ่านสำหรับแอป
เข้าไปที่ บัญชี Google จากนั้นค้นหา รหัสผ่านสำหรับแอป (ภาษาอังกฤษ App Password)
ตัวเลือก เลือกแอพ ให้เลือก อีเมล์ และตัวเลือก อุปกรณ์ ให้เลือก (ชื่อที่กำหนดเอง) อื่น
จากนั้นกำหนดชื่ออุปกรณ์เป็นอะไรก็ได้ (ตัวอย่างกำหนด ESP32) แล้วกดปุ่ม สร้าง
ระบบจะสร้างรหัสผ่านของ SMTP มาให้ในช่องสีเหลือง ให้เก็บรหัสผ่านนี้ไว้ใส่ในโค้ดต่อไป
เป็นอันเสร็จสิ้นขั้นตอนการเปิดใช้ SMTP ใน Gmail
DirectAdmin เป็นเครื่องมือจัดการโฮสติ้ง เหมาะสำหรับท่านที่เช่าโฮสติ้งเป็นตัวเอง อีเมล์ที่สร้างจาก DirectAdmin สามารถใช้ SMTP ได้เลยโดยไม่ต้องตั้งค่าใด ๆ เพิ่มเติม
ขั้นตอนการสร้างอีเมล์ใหม่ใน DirectAdmin มีดังนี้
1) เข้าสู่ระบบ DirectAdmin ตามขั้นตอนปกติ (โฮสติ้งแต่ละที่อาจมีขั้นตอนไม่เหมือนกัน) หากในแอ็กเคานต์นั้นมีหลายโดเมน จะมีให้เลือกโดเมนที่จะสร้างเมล์ก่อน (จะได้ @ เป็นของโดเมนนั้น ๆ เช่น เลือกโดเมน artronshop.co.th จะได้เป็น @artronshop.co.th)
2) ที่หัวข้อ E-Mail Management คลิกหัวข้อ E-Mail Accounts
3) กดที่ Create mail account
4) ตั้งค่าสร้างเมล์ใหม่ให้เรียบร้อย แล้วกดปุ่ม Create
5) ข้อมูลอีเมล์ที่สร้างใหม่ พร้อมข้อมูลการเชื่อมต่อกับ SMTP ก็จะขึ้นมาแล้ว
นำข้อมูลที่แสดงไปใส่ในโค้ดโปรแกรมต่อไป
บทความนี้เขียนโปรแกรมด้วย Arduino IDE V2 (หากยังไม่เคยใช้งาน แนะนำให้อ่านบทความ การติดตั้ง และใช้งาน Arduino IDE V2 ก่อน) การเขียนโปรแกรมใช้ไลบารี่ ESP-Mail-Client มีขั้นตอนการติดตั้งดังนี้
1) เปิดโปรแกรม Arduino IDE ขึ้นมา กดเมนูจัดการไลบารี่ (1) ค้นหา ESP Mail Client (2) แล้วกดปุ่ม Install แล้วรอจนกว่าจะติดตั้งเสร็จ
2) เมื่อติดตั้งเสร็จ จะมีข้อความ Successfully installed library (ดังรูป)
เขียนโปรแกรมส่งเมล์ลงใน Arduino IDE ตามขั้นตอนดังนี้
1) เพิ่ม include ไฟล์ WiFi.h และ ESP_Mail_Client.h
2) เพิ่ม define ตั้งค่าการเชื่อมต่อ WiFi โดยให้แก้ไข <WiFi Name> เป็นชื่อ WiFi และ <WiFi Password> เป็นรหัสผ่าน WiFi
3) เพิ่ม define ตั้งค่า SMTP โดย
4) สร้างออปเจคใช้งาน SMTP
5) ใน void setup() ใส่โค้ดส่วนเชื่อมต่อ WiFi
6) ใส่โค้ดส่วนเชื่อมต่อ SMTP
7) ใส่โค้ดส่วนส่งเมล์ โดยแก้ไขดังนี้
ได้โค้ดโปรแกรมฉบับเต็มดังนี้
เลือกบอร์ด เลือกพอร์ต แล้วกดอัพโหลดโปรแกรม รอจนกว่าจะอัพโหลดโปรแกรมเสร็จ
เมื่ออัพโหลดโปรแกรมเสร็จให้เปิด Serial Monitor ขึ้นมา ตั้ง 115200 แล้วกดปุ่ม Reset บนบอร์ด ESP32 สังเกตใน Serial Monitor จะขึ้นข้อความ WiFi connecting ตามด้วย WiFi connected ตามด้วย Sending mail... รอประมาณ 5 - 20 วินาที จะมีข้อความ Send mail successful เป็นอันส่งเมล์สำเร็จ
เมื่อเปิดเมล์ผู้รับดู ก็จะเห็นว่ามีเมล์เข้ามาแล้ว
การส่งเมล์ทำผ่านโปรโตคอล SMTP ที่ผู้ให้บริการอีเมล์ทุกเจ้ารองรับ แต่อาจไม่เปิดใช้งานเป็นค่าเริ่มต้น การเปิดใช้งานมีขั้นตอนแตกต่างกันไปตามแต่ละผู้ให้บริการ บน ESP32 ส่งเมล์ผ่าน SMTP ใช้ไลบารี่ ESP-Mail-Client