Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> จดหมาย

วิธีส่งข้อความอีเมลอัตโนมัติใน 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 library) มาล่วงหน้า ซึ่งสามารถใช้เพื่อทำงานกับเซิร์ฟเวอร์ 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 <senderMail@sender.com>
To: To Person <my_email@gmail.com>
Subject: Email Test
This is the body of the email.
"""

การส่งอีเมล

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

mySMTP.sendmail(emailSender, emailRecipients, newEmail)

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

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

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

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

import smtplib
emailSender = “senderMail@sender.com”
myThroaway = ‘my_email@gmail.com’
emailRecipients = [myThroaway]
newEmail = """From: From Person <senderMail@sender.com>
To: To Person <my_email@gmail.com>
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 เพื่อให้แน่ใจว่าอีเมลของคุณจะไม่ตกไปอยู่ในมือของผู้ไม่ประสงค์ดี

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

ในการดำเนินการดังกล่าว เราจำเป็นต้องทำการเปลี่ยนแปลงเล็กน้อยในโปรแกรมที่เราสร้างไว้ก่อนหน้านี้

แน่นอนว่าขั้นตอนแรกคือการนำเข้า ssl ห้องสมุดพร้อมกับ smtplib . 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 <senderMail@sender.com>
To: To Person <my_email@gmail.com>
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!