การส่ง 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 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
โดย wightfall จ 22 เม.ย. 2024 3:41 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
20
จ 22 เม.ย. 2024 3:41 pm โดย wightfall View Topic แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
โดย จิ๊กโก๋ ส 20 เม.ย. 2024 2:29 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
3
145
อ 23 เม.ย. 2024 2:24 pm โดย mindphp View Topic ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
โดย internTk21 ศ 19 เม.ย. 2024 11:56 am บอร์ด MindPHP News & Feedback
1
46
ศ 19 เม.ย. 2024 12:15 pm โดย internTk21 View Topic แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
โดย eange08 ศ 19 เม.ย. 2024 9:56 am บอร์ด Programming - PHP
1
80
ศ 19 เม.ย. 2024 10:28 am โดย mindphp View Topic สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว tar, zip
โดย mindphp พ 17 เม.ย. 2024 7:42 pm บอร์ด Linux - Web Server
0
123
พ 17 เม.ย. 2024 7:42 pm โดย mindphp View Topic คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว  tar, zip
เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
โดย mindphp จ 15 เม.ย. 2024 11:10 pm บอร์ด PostgreSQL
1
299
จ 15 เม.ย. 2024 11:14 pm โดย mindphp View Topic เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows
โดย tsukasaz ศ 12 เม.ย. 2024 2:25 pm บอร์ด Share Knowledge
0
317
ศ 12 เม.ย. 2024 2:25 pm โดย tsukasaz View Topic การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows
Super Сasual Dating - Real Women
โดย heroxbay ศ 12 เม.ย. 2024 8:55 am บอร์ด Microsoft Office Knowledge & line & Etc
0
259
ศ 12 เม.ย. 2024 8:55 am โดย heroxbay View Topic Super Сasual Dating - Real Women