วิธีการส่งอีเมลโดยใช้ Python
Python เป็นภาษาที่มีคุณลักษณะมากมาย สามารถใช้สำหรับการวิเคราะห์ข้อมูล การพัฒนาเว็บ และอื่นๆ ยังไม่หมดแค่นั้น Python มีฟีเจอร์ที่ซ่อนอยู่:คุณสามารถใช้เพื่อส่งอีเมลได้ ซึ่งหมายความว่าคุณสามารถส่งอีเมลรีเซ็ตรหัสผ่าน ลืมอีเมลรหัสผ่าน การแจ้งเตือนผู้ใช้ และอีเมลอื่นๆ ที่คุณต้องการส่งจากโปรแกรม Python
ในคู่มือนี้ เราจะพูดถึงวิธีส่งอีเมลโดยใช้ Python เราจะอธิบายเกี่ยวกับอีเมลและไลบรารี smtplib วิธีทำงาน และเขียนโปรแกรมตัวอย่างเพื่อส่งอีเมล
เพื่อไม่ให้เป็นการเสียเวลา มาเริ่มกันเลย!
การส่งอีเมลโดยใช้ Python
เมื่อคุณส่งอีเมลจากโปรแกรมคอมพิวเตอร์ โปรแกรมของคุณจะส่งข้อความโดยใช้โปรโตคอลที่เรียกว่า Simple Mail Transfer Protocol (SMTP) โปรโตคอลนี้ใช้โดยบริการอีเมลและไคลเอนต์ทั่วโลกเพื่อส่งข้อความ
ในการส่งอีเมลจากโปรแกรมคอมพิวเตอร์ คุณจะต้องมีเซิร์ฟเวอร์ SMTP คุณสามารถตั้งค่าได้ด้วยตัวเอง แต่ไม่จำเป็นต้องทำเช่นนี้เสมอไป บริการต่างๆ เช่น Gmail และ Outlook ให้บริการ SMTP เพื่อให้คุณสามารถใช้บัญชีอีเมลที่มีอยู่เพื่อส่งอีเมลได้
สำหรับคู่มือนี้ เราจะถือว่าคุณกำลังส่งอีเมลจากเซิร์ฟเวอร์ SMTP ของ Gmail คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับเซิร์ฟเวอร์ SMTP ได้ในเอกสารทางการของ Gmail หากต้องการทราบว่าผู้ให้บริการอีเมลของคุณรองรับ SMTP หรือไม่ ให้ค้นหา '[ชื่อผู้ให้บริการของคุณ] ข้อมูลรับรอง SMTP' ทางออนไลน์
เรามีสามขั้นตอนที่ต้องปฏิบัติตามเพื่อส่งอีเมล:
- กำหนดค่าการเชื่อมต่อ SMTP ของเรา
- สร้างวัตถุข้อความ
- ส่งข้อความผ่าน SMTP
การกำหนดค่าการเชื่อมต่อ SMTP
ในการเริ่มต้น ให้ตั้งค่าการเชื่อมต่อ SMTP ของเรา เราสามารถทำได้โดยใช้ไลบรารีชื่อ smtplib ซึ่งจัดเตรียมรหัสทั้งหมดที่เราต้องการเพื่อจัดการการเชื่อมต่อ ต้องขอบคุณไลบรารี่นี้ที่ส่งรหัสเพียงไม่กี่บรรทัดในการส่งอีเมล
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
เริ่มต้นด้วยการนำเข้าไลบรารี smtplib ลงในโค้ดของคุณ:
import smtplib
ตอนนี้เราต้องตั้งค่าตัวแปรที่เก็บข้อมูลรับรองสำหรับเซิร์ฟเวอร์ SMTP ของเรา การจัดเก็บค่าเหล่านี้ในตัวแปรจะช่วยให้เรารักษาความสามารถในการอ่านโค้ดของเราได้ นี่คือตัวแปรที่เราจะใช้:
sender = '[email protected]' password = '123456' server = 'smtp.gmail.com' port = 465
รหัสนี้มีการกำหนดค่าทั้งหมดที่เราต้องการเพื่อสร้างการเชื่อมต่อ SMTP ตอนนี้เราได้ตั้งค่านี้แล้ว เราสามารถเข้าสู่ระบบเซิร์ฟเวอร์ SMTP ของเราได้:
server = smtplib.SMTP_SSL(server, port) server.login(sender, password)
รหัสของเราสร้างการเชื่อมต่อ SSL กับเซิร์ฟเวอร์ SMTP ของเรา ซึ่งหมายความว่าเรากำลังใช้ Secure Socket Layer (SSL) เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของเรา SSL มีความปลอดภัยมากกว่าการเชื่อมต่อแบบเดิม และด้วยเหตุนี้จึงกลายเป็นมาตรฐานบนเซิร์ฟเวอร์ SMTP
กำหนดค่าการเชื่อมต่อ SMTP ของเราแล้ว!
สร้างวัตถุข้อความ
รหัสของเราไม่ได้ช่วยอะไรมากในขณะนี้:ไม่ได้ส่งอีเมลอย่างแน่นอน นั่นเป็นเพราะเรายังไม่ได้สร้างวัตถุข้อความ มาทำสิ่งนี้โดยใช้ไลบรารีอีเมล ในขณะที่คุณสามารถใช้ smtplib เพื่อสร้างวัตถุข้อความ ไลบรารีอีเมลมีความกระชับมากขึ้น
เริ่มต้นด้วยการนำเข้าแพ็คเกจอีเมลที่จำเป็น:
from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText
ด้วยการนำเข้าไลบรารีเหล่านี้ เราสามารถสร้างวัตถุข้อความของเรา:
message = MIMEMultipart() body = 'This is an email sent from Python!' message['From'] = sender message['To'] = '[email protected]' message['Subject'] = 'This is a test email' message.attach(MIMEText(body, 'plain'))
เราเริ่มต้นด้วยการเริ่มต้นวัตถุที่เรียกว่า 'ข้อความ' วัตถุนี้อ้างอิงคลาส MIMEMultipart จากไลบรารีอีเมล จากนั้นเราได้ระบุเนื้อหาของอีเมลและผู้ส่ง ผู้รับ และหัวเรื่อง
โค้ดบรรทัดสุดท้ายแนบเนื้อความของข้อความกับอีเมล
ส่งข้อความ
ตอนนี้เหลือเพียงส่งข้อความของเรา:
server.send_message(message)
เมื่อเรารันโค้ดทั้งหมดร่วมกัน อีเมลก็จะถูกส่งออกไป! อีเมลชื่อ "นี่คืออีเมลทดสอบ" จาก [email protected] ไปที่ [email protected]
การอ่านเทมเพลตจากไฟล์
เนื้อหาของอีเมลของเรามีความยาวเพียงหนึ่งบรรทัด ซึ่งหมายความว่าเราสามารถเขียนเนื้อหาอีเมลของเราใน Python ได้ อีเมลส่วนใหญ่ยาวกว่านี้ ดังนั้นจึงควรสร้างเทมเพลตที่เก็บข้อความสำหรับอีเมลบางฉบับ
เราจะเริ่มต้นด้วยการสร้างไฟล์ชื่อ email.txt และวางในเนื้อหาต่อไปนี้:
Hello ${NAME}, This is a test email! Thanks, Career Karma
เทมเพลตนี้มีตัวแปรชื่อ “NAME” ซึ่งอยู่ในวงเล็บปีกกา ({}) และนำหน้าด้วยเครื่องหมายดอลลาร์ ($) ตัวแปรนี้จะถูกแทนที่ด้วยชื่อของผู้รับในรหัสของเราในภายหลัง
ตอนนี้เราจะต้องอ่านเทมเพลตนี้ในโค้ดของเรา เราสามารถทำได้โดยการสร้างคลาสชื่อ read_email ซึ่งใช้เมธอด open() เพื่ออ่านไฟล์ของเรา
เราจะนำเข้าวัตถุเทมเพลตจากไลบรารีสตริง เราจะใช้วัตถุนี้เพื่อสร้างวัตถุที่สามารถอ่านได้ในอีเมลของเรา วางโค้ดบรรทัดต่อไปนี้ที่ด้านบนของโปรแกรม Python ของคุณ:
from string import Template
ด้านล่างคำสั่งนำเข้าทั้งหมดของคุณ ให้วางโค้ดนี้:
def read_email(): with open('email.txt', 'r') as file: contents = file.read() return Template(contents)
ฟังก์ชันนี้จะอ่านไฟล์ชื่อ "email.txt" ลงในตัวแปร "เนื้อหา" ค่าของมันถูกแปลงเป็นอ็อบเจกต์เทมเพลตโดยใช้เมธอดเทมเพลตจากไลบรารี "string" คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการอ่านไฟล์ในบทช่วยสอนการอ่านไฟล์ Python ของเรา
เปลี่ยนบรรทัดโค้ดต่อไปนี้ในโปรแกรมของคุณ:
body = 'This is an email sent from Python!'
ในการใช้รหัสนี้:
email_content = read_email() body = email_content.substitute(NAME="Test")
รหัสนี้เรียก read_email()
ทำงานในโค้ดของเราเพื่ออ่านเนื้อหาของไฟล์ “email.txt” จากนั้น ค่าของ NAME ภายในเทมเพลตอีเมลของเราจะถูกแทนที่ด้วยค่า "Test" โค้ดของเรามีลักษณะดังนี้:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from string import Template def read_email(): with open('email.txt', 'r') as file: contents = file.read() return Template(contents) sender = '[email protected]' password = '123456" server = 'smtp.gmail.com' port = 465 server = smtplib.SMTP_SSL(server, port) server.login(sender, password) message = MIMEMultipart() email_content = read_email() body = email_content.substitute(NAME="Test") message['From'] = sender message['To'] = '[email protected]' message['Subject'] = 'This is a test email' message.attach(MIMEText(body, 'plain'))
เมื่อคุณเรียกใช้โปรแกรมนี้ แทนที่ในข้อมูลประจำตัวเซิร์ฟเวอร์ SMTP ของคุณ อีเมลจะถูกส่งไป คุณเพิ่งเขียนโปรแกรมส่งอีเมล
บทสรุป
การส่งอีเมลใน Python ไม่ใช่เรื่องยากอีกต่อไป โดยไม่ต้องใช้เทมเพลต การส่งอีเมลจะใช้โค้ดเพียงไม่กี่บรรทัด โมดูลอีเมลและ smtplib ทำหน้าที่ส่วนใหญ่ จากที่กล่าวมา คุณสามารถใช้โมดูลอีเมลได้ครอบคลุมมากขึ้นเพื่อสร้างเทมเพลตสำหรับอีเมลของคุณที่สามารถใช้แทนค่าได้
คุณพร้อมสำหรับความท้าทายหรือไม่? เปลี่ยนโปรแกรมจากด้านบนเพื่อรองรับการส่งอีเมลไปยังผู้รับหลายคน คำแนะนำ:คุณจะต้องใช้ for loop เพื่อส่งอีเมลเหล่านี้
ตอนนี้คุณพร้อมที่จะเริ่มส่งอีเมลใน Python อย่างผู้เชี่ยวชาญแล้ว!