การส่ง E-Mail  ด้วย Python ผ่าน SMTP ของ Mailgun คือ การเขียนโปรเเกรมส่ง E-Mail ด้วยภาษา Python เพื่อส่งอีเมลล์ผ่าน Protocol แบบ TCP/IP ที่ใช้ในการส่ง E - mail ในเครือข่ายอินเทอร์เน็ต ไปยังเครื่องบริการอื่น ๆ ซี่งสามารถส่งเมล์ไปยังผู้ใช้ได้ทั่วโลก มีข้อจำกัดในเรื่องของความสามารถในการส่ง e-mail ว่ามันสามารถทำได้แบบเป็นคิวเท่านั้น และ SMTP ส่วนใหญ่จะไม่ยอมให้คนนอกองค์กร หรือ IP ที่อยู่นอกองค์กรการใช้งาน SMTP โดยในที่นี้ จะใช้ SMTP ของ Mailgun ที่เป็นผู้ให้บริการ ซึ่งมีข้อดีในเรื่อง มาตรฐาน ทำให้เมลล์ที่ถูกส่งไป ไม่ถูกมองว่าเป็น Junk mail แล้วไปอยู่ในกล่องเมลล์ขยะ ของผู้ใช้เมลล์แต่ละคน

ัภาพที่ใช้แสดงขั้นตอนการทำงานของ SMTP ที่ใช้ในการเชื่อมต่อเซิร์ฟเวอร์ของอีเมลล์

รูปที่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) และ ส่วนของเนื้อหาที่ได้เขียนไว้ ดังรูปตัวอย่างข้างล่างนี้

ผลลัพธ์จากการรันของ Program การส่งอีเมลล์ผ่าน SMTP ของ Mailgun โดยใช้Python ในหารเขียน Script

 รูปที่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 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Attribute ในภาษา Python: วิธีกำหนดค่าและใช้งาน
โดย athirach.offcial พฤ 28 มี.ค. 2024 11:37 am บอร์ด Python Knowledge
0
107
พฤ 28 มี.ค. 2024 11:37 am โดย athirach.offcial View Topic Attribute ในภาษา Python: วิธีกำหนดค่าและใช้งาน
คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด
โดย athirach.offcial พฤ 28 มี.ค. 2024 11:07 am บอร์ด Python Knowledge
3
659
ศ 29 มี.ค. 2024 9:18 am โดย athirach.offcial View Topic คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด
การใช้งานเมทอด zip() ใน Python: รวมข้อมูลจาก objects หลายๆ อันเข้าด้วยกันเป็น tuple อธิบายและตัวอย่าง
โดย athirach.offcial พฤ 28 มี.ค. 2024 10:51 am บอร์ด Python Knowledge
1
183
พฤ 28 มี.ค. 2024 8:55 pm โดย athirach.offcial View Topic การใช้งานเมทอด zip() ใน Python: รวมข้อมูลจาก objects หลายๆ อันเข้าด้วยกันเป็น tuple อธิบายและตัวอย่าง
ปิดโหมดข้อความธรรมดาในอีเมลแล้ว แต่เครื่องมือไม่ขึ้น ต้องตั้งค่ายังไง
โดย Narisara พฤ 28 มี.ค. 2024 10:46 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
140
พฤ 28 มี.ค. 2024 11:13 am โดย Narisara View Topic ปิดโหมดข้อความธรรมดาในอีเมลแล้ว แต่เครื่องมือไม่ขึ้น ต้องตั้งค่ายังไง
ตัวแปร List ใน Python เหมาะสำหรับงานแบบไหน
โดย athirach.offcial พ 27 มี.ค. 2024 11:34 am บอร์ด Python Knowledge
0
116
พ 27 มี.ค. 2024 11:34 am โดย athirach.offcial View Topic ตัวแปร List ใน Python เหมาะสำหรับงานแบบไหน
data science คืออะไร ? มีหน้าที่อะไร
โดย athirach.offcial พ 27 มี.ค. 2024 11:24 am บอร์ด Python Knowledge
0
114
พ 27 มี.ค. 2024 11:24 am โดย athirach.offcial View Topic data science คืออะไร ? มีหน้าที่อะไร
ไลบรารี SciPy การใช้เพื่อแก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์
โดย athirach.offcial พ 27 มี.ค. 2024 11:14 am บอร์ด Python Knowledge
0
99
พ 27 มี.ค. 2024 11:14 am โดย athirach.offcial View Topic ไลบรารี SciPy การใช้เพื่อแก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์
เชื่อมต่อ WordPress กับฐานข้อมูล วิธีเชื่อมต่อฐานข้อมูลง่ายๆ
โดย athirach.offcial พ 27 มี.ค. 2024 11:03 am บอร์ด Wordpress Developing Knowledge
0
71
พ 27 มี.ค. 2024 11:03 am โดย athirach.offcial View Topic เชื่อมต่อ WordPress กับฐานข้อมูล วิธีเชื่อมต่อฐานข้อมูลง่ายๆ