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

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ตัวอย่าง Prefix และ Suffix ในภาษาอังกฤษ
โดย internTk21 พฤ 04 เม.ย. 2024 4:34 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
122
พฤ 04 เม.ย. 2024 4:34 pm โดย internTk21 View Topic ตัวอย่าง Prefix และ Suffix ในภาษาอังกฤษ
เครื่องอ่านบาร์โค้ด สามารถ สแกนกลับหัว กลับหางได้ไหม และนี่คือคำตอบจาก ChatGPT
โดย mindphp พฤ 04 เม.ย. 2024 4:23 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
89
พฤ 04 เม.ย. 2024 4:23 pm โดย mindphp View Topic เครื่องอ่านบาร์โค้ด สามารถ สแกนกลับหัว กลับหางได้ไหม และนี่คือคำตอบจาก ChatGPT
คำศัพท์ภาษาอังกฤษ Homonyms ที่พบได้ในชีวิตประจำวัน
โดย internTk21 พฤ 04 เม.ย. 2024 2:18 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
80
พฤ 04 เม.ย. 2024 2:18 pm โดย internTk21 View Topic คำศัพท์ภาษาอังกฤษ Homonyms ที่พบได้ในชีวิตประจำวัน
การออกเสียงคำศัพท์ที่ลงท้ายด้วย-ed ในภาษาอังกฤษ
โดย internTk21 พฤ 04 เม.ย. 2024 12:54 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
63
พฤ 04 เม.ย. 2024 12:54 pm โดย internTk21 View Topic การออกเสียงคำศัพท์ที่ลงท้ายด้วย-ed ในภาษาอังกฤษ
ตัวอักษร phonetic ในภาษาอังกฤษที่เสียงสั่น(Voiced)และไม่สั่น(Voiceless)
โดย internTk21 พฤ 04 เม.ย. 2024 10:27 am บอร์ด Microsoft Office Knowledge & line & Etc
0
59
พฤ 04 เม.ย. 2024 10:27 am โดย internTk21 View Topic ตัวอักษร phonetic ในภาษาอังกฤษที่เสียงสั่น(Voiced)และไม่สั่น(Voiceless)
selenium chrome firefox กับ edge ควรใช้บราว์เซอร์แบบไหนดีในการทดสอบ
โดย athirach.offcial อ 02 เม.ย. 2024 10:10 pm บอร์ด Software testing
0
102
อ 02 เม.ย. 2024 10:10 pm โดย athirach.offcial View Topic selenium chrome firefox กับ edge ควรใช้บราว์เซอร์แบบไหนดีในการทดสอบ
Selenium สำหรับ Web scraping
โดย athirach.offcial อ 02 เม.ย. 2024 9:52 pm บอร์ด Software testing
0
72
อ 02 เม.ย. 2024 9:52 pm โดย athirach.offcial View Topic Selenium สำหรับ Web scraping
วิธีการเขียนArgumentative Essay
โดย internTk21 อ 02 เม.ย. 2024 3:54 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
102
อ 02 เม.ย. 2024 3:54 pm โดย internTk21 View Topic วิธีการเขียนArgumentative Essay