Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python ส่งอีเมล:A Guide

วิธีการส่งอีเมลโดยใช้ 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 = 'test@careerkarma.com'
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'] = 'test@careerkarma.com'
message['Subject'] = 'This is a test email'

message.attach(MIMEText(body, 'plain'))

เราเริ่มต้นด้วยการเริ่มต้นวัตถุที่เรียกว่า 'ข้อความ' วัตถุนี้อ้างอิงคลาส MIMEMultipart จากไลบรารีอีเมล จากนั้นเราได้ระบุเนื้อหาของอีเมลและผู้ส่ง ผู้รับ และหัวเรื่อง

โค้ดบรรทัดสุดท้ายแนบเนื้อความของข้อความกับอีเมล

ส่งข้อความ

ตอนนี้เหลือเพียงส่งข้อความของเรา:

server.send_message(message)

เมื่อเรารันโค้ดทั้งหมดร่วมกัน อีเมลก็จะถูกส่งออกไป! อีเมลชื่อ "นี่คืออีเมลทดสอบ" จาก test@careerkarma.com ไปที่ test@careerkarma.com

การอ่านเทมเพลตจากไฟล์

เนื้อหาของอีเมลของเรามีความยาวเพียงหนึ่งบรรทัด ซึ่งหมายความว่าเราสามารถเขียนเนื้อหาอีเมลของเราใน 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 = 'test@careerkarma.com'
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'] = 'test@careerkarma.com'
message['Subject'] = 'This is a test email'

message.attach(MIMEText(body, 'plain'))

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

บทสรุป

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

คุณพร้อมสำหรับความท้าทายหรือไม่? เปลี่ยนโปรแกรมจากด้านบนเพื่อรองรับการส่งอีเมลไปยังผู้รับหลายคน คำแนะนำ:คุณจะต้องใช้ for loop เพื่อส่งอีเมลเหล่านี้

ตอนนี้คุณพร้อมที่จะเริ่มส่งอีเมลใน Python อย่างผู้เชี่ยวชาญแล้ว!