วิธีส่งข้อความอีเมลอัตโนมัติใน Python

วิธีส่งข้อความอีเมลอัตโนมัติใน Python

แม้ว่าไคลเอนต์อีเมลเชิงพาณิชย์จะมอบความสะดวกสบายให้กับ 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) ที่ติดตั้งไว้ล่วงหน้า ซึ่งสามารถใช้เพื่อทำงานกับเซิร์ฟเวอร์ SMTP ได้

เช่นเดียวกับโมดูล Python อื่น ๆ สิ่งแรกที่คุณต้องทำคือนำเข้า smtplib

import smtplib

การเริ่มต้นวัตถุ SMTP

ตอนนี้คุณสามารถใช้ smtplib เพื่อสร้างออบเจ็กต์ SMTP ได้ ซึ่งจะมอบฟังก์ชันการทำงานส่วนใหญ่ของไคลเอ็นต์อีเมลทั่วไป อย่างไรก็ตาม ฟังก์ชันของออบเจ็กต์ SMTP สามารถใช้ได้ผ่านเมธอดอินสแตนซ์เท่านั้น ดังนั้น ขั้นตอนต่อไปคือการประกาศอินสแตนซ์ของอ็อบเจ็กต์

mySMTP = smtplib.SMTP('smtp.google.com')

สิ่งนี้กำหนดค่าอ็อบเจ็กต์ SMTP เพื่อส่งอีเมลโดยใช้เซิร์ฟเวอร์ SMTP ของ Google

หลังจากนี้เราจะระบุอีเมลผู้ส่งและผู้รับ นี่คือที่ที่บัญชี Gmail ที่คุณสร้างไว้ก่อนหน้านี้มีประโยชน์

emailSender = senderMail@sender.com
myThroaway = 'myEmail@gmail.com'
emailRecipients = [myThroaway]

สิ่งหนึ่งที่ควรทราบในที่นี้คือ รายชื่อผู้รับจริงๆ แล้วเป็นอาร์เรย์ ซึ่งหมายความว่าได้รับการออกแบบมาเพื่อเก็บค่าที่ไม่ใช่ของอะตอม ด้วยเหตุนี้ คุณจึงสามารถระบุรายชื่อส่งเมลทั้งหมดในช่องนี้ได้!

การเขียนข้อความ

น่าจะเป็นส่วนที่ตรงไปตรงมาที่สุดของกระบวนการ ที่นี่คุณต้องป้อนค่าที่ปกติแล้วคุณจะเพิ่มเมื่อเขียนอีเมลใหม่ ซึ่งรวมถึง:

  • รายละเอียดผู้ส่ง
  • รายละเอียดผู้รับ
  • เรื่อง
  • เนื้อหาข้อความ

ฟิลด์เหล่านี้ถูกรวมไว้ภายในเครื่องหมายอัญประกาศสามตัว และแบ่งเขตดังนี้:

ฉันจะปิดไฟฉายได้อย่างไร
newEmail = '''From: From Person
To: To Person
Subject: Email Test
This is the body of the email.
'''

การส่งอีเมล

สุดท้าย เราสามารถใช้คำสั่ง sendmail เพื่อส่งอีเมลจากเซิร์ฟเวอร์ SMTP ของคุณไปยังเซิร์ฟเวอร์ของผู้รับ

mySMTP.sendmail(emailSender, emailRecipients, newEmail)

ตอนนี้ มีขั้นตอนสุดท้ายเพียงขั้นตอนเดียว: การจัดระเบียบโค้ดใหม่เพื่อป้องกันไม่ให้โปรแกรมหยุดทำงานที่คาดการณ์ได้

การแก้ไขปัญหาโปรแกรมอีเมล Python ของคุณ

บางครั้ง เซิร์ฟเวอร์ SMTP ของคุณอาจไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ของผู้รับได้ หรืออาจมีปัญหาในการส่งอีเมลจากพอร์ต SMTP หนึ่งไปยังอีกพอร์ตหนึ่ง ในกรณีดังกล่าว โปรแกรมของคุณอาจหยุดทำงานโดยไม่คาดคิด

เพื่อพิจารณาความเป็นไปได้ดังกล่าว คุณสามารถใช้ a ลองยกเว้น บล็อกและใส่ข้อความสั่งที่อาจเกิดข้อผิดพลาดลงใน ลอง บล็อก. โปรแกรมทั้งหมดของคุณพร้อมกับบล็อกการยกเว้นควรมีลักษณะดังนี้:

import smtplib
emailSender = senderMail@sender.com
myThroaway = ‘my_email@gmail.com’
emailRecipients = [myThroaway]
newEmail = '''From: From Person
To: To Person
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 . NS ssl ไลบรารีช่วยให้คุณสร้างบริบท SSL ที่ปลอดภัยและสื่อสารผ่านเครือข่ายที่เข้ารหัสได้โดยการเชื่อมต่อกับพอร์ตเฉพาะที่ปลายทั้งสองด้าน

บริบท SSL ที่ปลอดภัยเป็นเพียงคอลเล็กชันของการเข้ารหัส เวอร์ชันโปรโตคอล ใบรับรองที่เชื่อถือได้ ตัวเลือก TLS และส่วนขยาย TLS

ต่อจากนี้ เราสามารถระบุพอร์ต TLS และเพิ่มในบางส่วนได้ ssl ฟังก์ชั่นห้องสมุดเพื่อสร้างอีเมลที่ปลอดภัย

รหัสเมื่อทำการเปลี่ยนแปลงทั้งหมดจะมีลักษณะดังนี้:

import smtplib, ssl
smtpServer = 'smtp.gmail.com'
port = 587
myEmail = 'my_email@gmail.com'
password = 'my_password'
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = '''From: From Person
To: To Person
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 นั้นง่ายกว่าที่เคย

หากต้องการสร้างสิ่งดีๆ ต่อไปด้วยโค้ด โปรดดูคำแนะนำเกี่ยวกับวิธีการ สร้างบอทโทรเลขของคุณเองด้วย Python 3 !

แบ่งปัน แบ่งปัน ทวีต อีเมล วิธีอัปเกรดทักษะ Python และ AI ด้วย Keras, Pytorch, Tensorflow และอื่นๆ

อัปเกรดทักษะการเขียนโปรแกรมและการพัฒนาเว็บของคุณใน Python, ปัญญาประดิษฐ์, Keras, PyTorch และอื่นๆ

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • การเขียนโปรแกรม
  • Gmail
  • เคล็ดลับอีเมล
  • Python
  • การทำงานอัตโนมัติ
เกี่ยวกับผู้เขียน ยัช เชลลานี(ตีพิมพ์บทความ 10 บทความ)

Yash เป็นนักศึกษาวิทยาการคอมพิวเตอร์ผู้ใฝ่ฝันที่รักการสร้างสิ่งต่าง ๆ และเขียนเกี่ยวกับเทคโนโลยีทุกอย่าง ในเวลาว่าง เขาชอบเล่นสควอช อ่าน Murakami ตัวล่าสุด และล่ามังกรใน Skyrim

เพิ่มเติมจาก Yash Chellani

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก