แม้ว่าไคลเอนต์อีเมลเชิงพาณิชย์จะมอบความสะดวกสบายให้กับ GUI ที่ใช้งานง่าย แต่ก็มักจะขาดความยืดหยุ่นและความสามารถในการปรับแต่งที่นักพัฒนาหรือผู้สร้างเนื้อหาจำนวนมากต้องการสำหรับความต้องการในการส่งอีเมลของพวกเขา
ไม่ว่าจะเป็นการส่งอีเมลขอบคุณไปยังสมาชิกใหม่บนช่องทางโซเชียลมีเดียของคุณ หรือเพิ่มฟังก์ชันการทำงานของอีเมลให้กับโครงการล่าสุดของคุณ ความสามารถในการส่งข้อความอัตโนมัติโดยใช้ SMTP ใน Python เป็นสิ่งที่มีประโยชน์อย่างยิ่ง
อ่านต่อไปเพื่อค้นหาวิธีรับสคริปต์ Python เพื่อส่งอีเมลที่ทำงานบนเครื่องของคุณวันนี้
SMTP คืออะไร
พูดง่ายๆ คือ SMTP หรือ Simple Mail Transfer Protocol คือโปรโตคอลการสื่อสารสำหรับเซิร์ฟเวอร์อีเมลเพื่อส่งอีเมลผ่านอินเทอร์เน็ต
เป็นส่วนสำคัญของชั้นแอปพลิเคชันของชุด TCP/IP ซึ่งเป็นชุดของโปรโตคอลที่ใช้สำหรับการสื่อสารทางอินเทอร์เน็ตหรือเครือข่ายอื่นๆ ที่คล้ายคลึงกัน ในเครือข่ายที่มีการนำ SMTP ไปใช้ กระบวนการที่เรียกว่า จัดเก็บและส่งต่อ ช่วยย้ายอีเมลข้ามเครือข่าย
ที่จุดสิ้นสุดแต่ละจุด ซอฟต์แวร์ที่เรียกว่า Mail Transfer Agent (MTA) จะใช้การจัดเก็บและส่งต่อเพื่ออำนวยความสะดวกในการสื่อสารระหว่างเซิร์ฟเวอร์ SMTP ที่เข้าร่วม ดังนั้น บทบาทหลักของ SMTP คือการกำหนดตำแหน่งและวิธีที่เมลย้ายจากจุดหนึ่งไปยังอีกจุดหนึ่งในเครือข่าย
เริ่มต้นใช้งาน
คุณต้องมีบัญชีอีเมลเพื่อใช้ในการส่งอีเมลโดยใช้โปรแกรมนี้ เนื่องจากเราจะใช้บริการ SMTP ของโปรแกรมรับส่งเมลเพื่อส่งอีเมล สำหรับบทแนะนำนี้ เราจะใช้ Gmail
คุณยังใช้เซิร์ฟเวอร์แก้ไขข้อบกพร่อง SMTP ในเครื่องเพื่อส่งอีเมลทดสอบได้ แต่ตอนนี้เราจะใช้บัญชีอีเมลเพื่อส่งอีเมลเนื่องจากใช้งานง่ายกว่า
เป็นไปได้ที่จะใช้บัญชี Gmail ที่มีอยู่ แต่เมื่อคุณลองใช้งานโปรแกรมของคุณ ในไม่ช้าก็อาจเต็มไปด้วยอีเมลทดสอบ นี่คือเหตุผลที่เราแนะนำให้สร้างบัญชี "ทิ้ง" เพื่อวัตถุประสงค์ในการทดสอบ
ตอนนี้ เปิดตัวเลือกเพื่ออนุญาตให้แอปที่มีความปลอดภัยน้อยเข้าถึงบัญชี Gmail ของคุณ นี่เป็นอีกเหตุผลหนึ่งที่ใช้อีเมลที่ใช้แล้วทิ้ง เนื่องจากไม่แนะนำให้ลองใช้การตั้งค่าความเป็นส่วนตัวของอีเมลหลักของคุณ
การเขียนอีเมลใน Python
Python 3 มาพร้อมกับโมดูลที่เรียกว่า smtplib (ย่อมาจาก smtp library) มาล่วงหน้า ซึ่งสามารถใช้เพื่อทำงานกับเซิร์ฟเวอร์ SMTP
เช่นเดียวกับโมดูล Python อื่นๆ สิ่งแรกที่คุณต้องทำคือนำเข้า smtplib
import smtplib
กำลังเริ่มต้นวัตถุ SMTP
ตอนนี้คุณสามารถใช้ smtplib เพื่อสร้างออบเจ็กต์ SMTP ได้ ซึ่งจะช่วยให้คุณใช้งานฟังก์ชันส่วนใหญ่ของไคลเอ็นต์อีเมลทั่วไปได้ อย่างไรก็ตาม ฟังก์ชันของออบเจ็กต์ SMTP สามารถใช้ได้ผ่านเมธอดอินสแตนซ์เท่านั้น ดังนั้น ขั้นตอนต่อไปคือการประกาศอินสแตนซ์ของอ็อบเจ็กต์
mySMTP = smtplib.SMTP("smtp.google.com")
ซึ่งจะกำหนดค่าออบเจ็กต์ SMTP ให้ส่งอีเมลโดยใช้เซิร์ฟเวอร์ SMTP ของ Google
หลังจากนี้เราจะระบุอีเมลผู้ส่งและผู้รับ นี่คือที่ที่บัญชี Gmail ที่คุณสร้างไว้ก่อนหน้านี้มีประโยชน์
emailSender = “[email protected]”
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
สิ่งหนึ่งที่ควรทราบที่นี่คือรายชื่อผู้รับจริงๆ แล้วเป็นอาร์เรย์ ซึ่งหมายความว่าได้รับการออกแบบมาเพื่อเก็บค่าที่ไม่ใช่อะตอมมิก ด้วยเหตุนี้ คุณจึงสามารถระบุรายชื่อส่งเมลทั้งหมดในช่องนี้ได้!
การเขียนข้อความ
น่าจะเป็นส่วนที่ตรงไปตรงมาที่สุดของกระบวนการ ที่นี่คุณจะต้องป้อนค่าที่ปกติแล้วคุณจะเพิ่มเมื่อเขียนอีเมลใหม่ ซึ่งรวมถึง:
- รายละเอียดผู้ส่ง
- รายละเอียดผู้รับ
- หัวเรื่อง
- เนื้อหาของข้อความ
ฟิลด์เหล่านี้รวมกันอยู่ภายในเครื่องหมายอัญประกาศสามตัว และแบ่งเขตดังนี้:
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
การส่งอีเมล
สุดท้าย เราสามารถใช้คำสั่ง sendmail เพื่อส่งอีเมลจากเซิร์ฟเวอร์ SMTP ของคุณไปยังเซิร์ฟเวอร์ของผู้รับ
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
ตอนนี้ มีเพียงขั้นตอนสุดท้าย:การจัดระเบียบโค้ดใหม่เพื่อป้องกันไม่ให้โปรแกรมหยุดทำงาน
การแก้ไขปัญหาโปรแกรมอีเมล Python ของคุณ
บางครั้ง เซิร์ฟเวอร์ SMTP ของคุณอาจไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ของผู้รับได้ หรืออาจมีปัญหาในการส่งอีเมลจากพอร์ต SMTP หนึ่งไปยังอีกพอร์ตหนึ่ง ในกรณีนี้ โปรแกรมของคุณอาจขัดข้องโดยไม่คาดคิด
เพื่อพิจารณาความเป็นไปได้ดังกล่าว คุณสามารถใช้ ลองยกเว้น บล็อกและใส่ข้อความสั่งที่อาจเกิดข้อผิดพลาดลงใน ลอง บล็อก. โปรแกรมทั้งหมดของคุณควรมีลักษณะดังนี้:
import smtplib
emailSender = “[email protected]”
myThroaway = ‘[email protected]’
emailRecipients = [myThroaway]
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
smtpObj = smtplib.SMTP(‘smtp.gmail.com’)
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
print (“Email sent successfully!”)
except SMTPException:
print ("Error: There was an error in sending your email.")
การรักษาความปลอดภัยอีเมลของคุณ
หากคุณต้องการใช้ Python ในการตั้งค่าจริงในการส่งอีเมล สิ่งสำคัญคือต้องตรวจสอบให้แน่ใจว่าการสื่อสารมีความปลอดภัยทั้งสองด้าน
การใช้เซิร์ฟเวอร์ SMTP อย่างง่ายที่มีพอร์ตเริ่มต้นไม่ได้ให้ชั้นการเข้ารหัสใด ๆ แก่การสื่อสาร ซึ่งหมายความว่าหากมีบุคคลที่สามคอยรับฟังข้อมูลในเครือข่ายของคุณ บุคคลดังกล่าวจะสามารถเข้าถึงข้อมูลรับรองการเข้าสู่ระบบและข้อมูลที่อยู่ในอีเมลของคุณได้
วิธีหนึ่งในการหลีกเลี่ยงปัญหานี้คือการใช้โปรโตคอล TLS (Transport Layer Security) เพื่อเข้ารหัสการสื่อสารของคุณ นี่เป็นโปรโตคอลเดียวกับที่ใช้โดยโปรแกรมรับส่งเมลรายใหญ่ เช่น Gmail และ Outlook เพื่อให้แน่ใจว่าอีเมลของคุณจะไม่ตกไปอยู่ในมือของผู้ไม่ประสงค์ดี
ในการดำเนินการดังกล่าว เราจำเป็นต้องทำการเปลี่ยนแปลงเล็กน้อยในโปรแกรมที่เราสร้างไว้ก่อนหน้านี้
แน่นอนว่าขั้นตอนแรกคือการนำเข้า ssl ห้องสมุดพร้อมกับ smtplib . ssl ไลบรารีช่วยให้คุณสร้างบริบท SSL ที่ปลอดภัยและสื่อสารผ่านเครือข่ายที่เข้ารหัสได้ด้วยการเชื่อมต่อกับพอร์ตเฉพาะที่ปลายทั้งสองด้าน
บริบท SSL ที่ปลอดภัยเป็นเพียงคอลเล็กชันของการเข้ารหัส เวอร์ชันโปรโตคอล ใบรับรองที่เชื่อถือได้ ตัวเลือก TLS และส่วนขยาย TLS
ต่อจากนี้ เราสามารถระบุพอร์ต TLS และเพิ่ม ssl . สองสามตัว ห้องสมุดทำหน้าที่สร้างอีเมลที่ปลอดภัย
รหัสที่มีการเปลี่ยนแปลงทั้งหมดจะมีลักษณะดังนี้:
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
password = "my_password"
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
server = smtplib.SMTP(smtpServer,port)
server.starttls(context=context)
server.login(newEmail, password)
except Exception as e:
print("the email could not be sent.")
finally:
server.quit()
เช่นเคย คุณควรสร้างและใช้อินสแตนซ์ SMTP ในบล็อกการยกเว้นเพื่อป้องกันไม่ให้โปรแกรมหยุดทำงานอย่างกะทันหัน
คุณสามารถทำอะไรกับสคริปต์ Python นี้ได้
ตอนนี้ คุณได้รับทักษะที่ยอดเยี่ยมและมีประโยชน์อย่างน่าประหลาดใจในการทำให้อีเมลอัตโนมัติโดยใช้รหัสแล้ว คุณสามารถนำไปใช้กับทุกแพลตฟอร์มที่ต้องการส่งอีเมลไปยังรายชื่อรับเมลที่หลากหลาย
ตั้งแต่การใช้บนเว็บไซต์ส่วนตัวของคุณเพื่อส่งอีเมลตอบรับอัตโนมัติ ไปจนถึงส่งอีเมลการ์ดคริสต์มาสหรือคำเชิญให้กับครอบครัวและเพื่อนของคุณ การใช้สคริปต์ Python ขนาดเล็กนี้ถูกจำกัดโดยความคิดสร้างสรรค์ของคุณเองเท่านั้น
นอกจากนี้ นี่เป็นเพียงหนึ่งในหลาย ๆ สิ่งที่คุณทำได้ด้วย Python ด้วยการสนับสนุนของนักพัฒนาที่แพร่หลายและไวยากรณ์ที่เรียนรู้ได้ง่าย การเรียนรู้ทักษะ Python นั้นง่ายกว่าที่เคย
หากต้องการสร้างสิ่งเจ๋งๆ ต่อไปด้วยโค้ด โปรดดูคำแนะนำเกี่ยวกับวิธีสร้างบอท Telegram ของคุณเองด้วย Python 3!