การส่ง E-Mail ด้วย Python ผ่าน SMTP ของ Mailgun คือ การเขียนโปรเเกรมส่ง E-Mail ด้วยภาษา Python เพื่อส่งอีเมลล์ผ่าน Protocol แบบ TCP/IP ที่ใช้ในการส่ง E - mail ในเครือข่ายอินเทอร์เน็ต ไปยังเครื่องบริการอื่น ๆ ซี่งสามารถส่งเมล์ไปยังผู้ใช้ได้ทั่วโลก มีข้อจำกัดในเรื่องของความสามารถในการส่ง e-mail ว่ามันสามารถทำได้แบบเป็นคิวเท่านั้น และ SMTP ส่วนใหญ่จะไม่ยอมให้คนนอกองค์กร หรือ IP ที่อยู่นอกองค์กรการใช้งาน SMTP โดยในที่นี้ จะใช้ SMTP ของ Mailgun ที่เป็นผู้ให้บริการ ซึ่งมีข้อดีในเรื่อง มาตรฐาน ทำให้เมลล์ที่ถูกส่งไป ไม่ถูกมองว่าเป็น Junk mail แล้วไปอยู่ในกล่องเมลล์ขยะ ของผู้ใช้เมลล์แต่ละคน
รูปที่1 SMTP Sending Email
Simple Mail Transfer Protocol (SMTP) ใช้เป็นโปรโตคอลในการจัดการการโอนอีเมลโดยใช้ Python ใช้เพื่อกำหนดเส้นทางอีเมลระหว่างเซิร์ฟเวอร์อีเมล เป็นโปรโตคอลชั้นแอปพลิเคชันที่อนุญาตให้ผู้ใช้ส่งจดหมายไปยังอีก อีเมลผู้รับดึงข้อมูลโดยใช้โปรโตคอลPOP (Post Office Protocol)และIMAP (Internet Message Access Protocol)
ขั้นตอนการส่ง E - mail ด้วย Python ผ่าน SMTP ของ mailgun
1. ต้องเป็นสมาชิกของ Mailgun ก่อน โดยสามารถเข้าไปสมัครได้ที่ https://www.mailgun.com/
2. ตั้งค่า SMTP ของ Mailgun
3. Module ที่ต้องเตรียมสำหรับการเขียน script python คือ module email และ module smtplib
การติดตั้งโมดูล เราจำเป็นต้องมี pip ก่อน เนื่องจาก pip คือตัวติดตั้ง packages เสริมใน python หากยังไม่ได้ติดตั้ง สามารถทำตามขั้นตอนดังนี้
- การติดตั้ง pip สำหรับ window
ให้ download file จาก https://bootstrap.pypa.io/get-pip.py จากนั้นเข้าโฟล์เดอร์ download เเล้วเปิด command ใช้คำสั่งนี้
python get-pip.py
- การติดตั้ง pip สำหรับ mac
sudo python get-pip.py
- การติดตั้ง pip สำหรับ Linux
sudo apt-get install python3-pip
เมื่อทำการติดตตั้ง pip เรียบร้อยเเล้ว ก็สามารถติดตั้ง module ที่ต้องใช้ได้เเล้ว ซึ่งการติดตั้งโมดูลใน python จะใช้คำสั่ง pip install ตามด้วยชื่อของโมดูลที่ต้องการติดตั้ง อย่างเช่น การติดตั้งโมดูล email จะใช้คำสั่ง
pip install email
4 เริ่มเขียนโปรเเกรมการส่งเมลล์ผ่าน
4.1 ขั้นแรกเราต้องนำเข้าโมดูลที่เกี่ยวข้องในการรันของตัวโปรแกรมที่จะเขียน Python มีโมดูล smtplib ซึ่งกำหนดอ็อบเจ็กต์เซสชันไคลเอ็นต์ SMTP ที่ใช้ในการส่งอีเมลไปยังเครื่องอินเทอร์เน็ต เพื่อให้สามารถใช้งานได้ จำเป็นต้องนำเข้าโมดูล smtplib โดยใช้คำสั่ง import แล้วตามด้วยชื่อโมดูล
4.2 กำหนดตัวแปร use, password ตามบัญชีผู้ใช้ที่ได้สมัครไว้
4.3 กำหนดตัวแปรผู้ส่ง(email ผู้ส่ง) , ผู้รับ(email ผู้รับ)
4.4 กำหนดตัวแปรเก็บข้อมูลของเนื้อหาที่ต้องการส่งไปใน email
4.5 ตั้งค่า server เพื่อส่งข้อมูล
นี่เป็น code สำหรับ การส่งเมลล์ผ่าน SMTP ด้วย Python
import email #เรียกใช้งาน mudule email
import smtplib #เรียกใช้งาน module smtplib
# กำหนดตัวแปรชื่อผู้ใช้ และ รหัสผ่าน ตามบัญชีผู้ใช้
username = 'username'
password = 'password'
# กำหนดตัวแปรอีเมลผู้ส่ง และ ผู้รับ
sender = '[email protected]'
recipient = '[email protected]'
# เนื้อหาของอีเมล
body = """
การส่งเมลล์ผ่าน SMTP ของ Mailgun ด้วย Python
"""
mail = body
# ตั้งค่าเซิร์ฟเวอร์ด้วยชื่อโฮส และ พอร์ท
server = smtplib.SMTP(smtplib.SMTP('mail.your-domain.com', 25))
#syntax ของ smtplib.SMTP( [host [, port [, local_hostname]]] )
server.login(username, password)
server.sendmail(sender, recipient, mail.encode('utf-8'))
server.quit()
สามารถ copy code เเล้วไปปรับแต่งแก้ไขได้ตามที่เราต้องการ ซึ่งเมื่อทำการรันโค้ดแล้ว จะมีข้อความเนื้อหาที่ได้เขียนไว้ ถูกไปยัง email ที่เราตั้งเป็น recipient(ผู้รับ) โดยจะแสดง email ที่ใช้ในการส่ง(sender) และ ส่วนของเนื้อหาที่ได้เขียนไว้ ดังรูปตัวอย่างข้างล่างนี้
รูปที่2 ผลลัพธ์หลังทำการันโปรแกรม
หลังจากการที่ได้รู้จักการส่งเมลล์ผ่าน SMTP ของ mailgun ด้วย Python จะเห็นได้ว่าวิธีการเขียนง่ายมาก แค่มี บัญชีผู้ใช้งาน , Host และ port สำหรับใช้งาน Server SMTP ของ Mailgun ก็สามารถเขียน Scrip Python เพื่อส่งเมลล์ได้เเล้ว นอกจากนี้ยังสามารถนำไปประยุกต์ใช้กับ Class หรือ ฟังก์ชันต่างๆเพื่อให้ได้ผลลัพธ์ตามที่ต้องการได้อีกด้วย
นอกจากสามารถใช้ Python ในการส่งเมลได้แล้ว MailGun ยังสามารถใช้งานร่วมกับภาษาอื่นๆ ได้เกือบทุกภาษา หรือ ใช้งานผ่าน cURL ก็ได้เช่นเดียวกัน ทำความรู้จัก MailGun ให้มากยิ่งขึ้น เชิญทางนี้
อ้างอิง :
1. วิธีการสมัครและการใช้งาน MailGun (เมลกัน), [ออนไลน์] เข้าถึงได้ https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/266-mailgun/7125-how-to-apply-and-use-mailgun.html
2. เขียนโปรแกรมส่งอีเมลด้วยภาษา Python, [ออนไลน์] เข้าถึงได้ https://www.mindphp.com/forums/viewtopic.php?f=144&t=41465
3. Python - Sending Email using SMTP, [ออนไลน์] เข้าถึงได้ https://www.pitt.edu/~naraehan/python3/reading_writing_methods.html
4. Python ส่งอีเมลโดยใช้ SMTP , [ออนไลน์] เข้าถึงได้ https://www.javatpoint.com/python-sending-email
อ้างอิงรูปภาพ :
1. SMTP Sending Email, [ออนไลน์] เข้าถึงได้ https://www.javatpoint.com/python-sending-email