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

ไคลเอนต์โปรโตคอล SMTP ใน Python (smtplib)


ไลบรารีมาตรฐานของ Python มีโมดูล 'smtplib' ซึ่งกำหนดวัตถุเซสชันไคลเอ็นต์ SMTP ที่สามารถใช้ส่งจดหมายผ่านโปรแกรม Python ได้

เมลเซิร์ฟเวอร์เป็นแอปพลิเคชั่นที่จัดการและส่งอีเมลผ่านอินเทอร์เน็ต เซิร์ฟเวอร์อีเมลขาออกใช้เซิร์ฟเวอร์ SMTP หรือ Simple MailTransfer Protocol ซึ่งเป็นมาตรฐานอินเทอร์เน็ตสำหรับการส่งอีเมล

เซิร์ฟเวอร์อีเมลขาเข้ามีสองประเภทหลัก POP3 หรือโปรโตคอลที่ทำการไปรษณีย์ และ IMAP หรือโปรโตคอลการเข้าถึงข้อความทางอินเทอร์เน็ต

ฟังก์ชัน smptlib.SMTP()

ฟังก์ชันนี้ส่งคืนอ็อบเจ็กต์ของคลาส SMTP มันห่อหุ้มและจัดการการเชื่อมต่อกับเซิร์ฟเวอร์ SMTP หรือ ESMTP อาร์กิวเมนต์ต่อไปนี้ถูกกำหนดไว้ในลายเซ็นของฟังก์ชันนี้ -

host
สตริงที่เป็นชื่อของรีโมตโฮสต์ที่จะเชื่อมต่อ
พอร์ต
ตัวเลขที่ระบุพอร์ตที่จะเชื่อมต่อ โดยค่าเริ่มต้น smtplib.SMTP_PORT จะถูกใช้
local_hostname
ใช้เป็น FQDN ของโลคัลโฮสต์ในคำสั่ง HELO/EHLO
source_address
ออบเจ็กต์ 2-tuple (โฮสต์, พอร์ต) ที่ซ็อกเก็ตที่จะผูก

มีวิธีการดังต่อไปนี้ที่สนับสนุนการทำงานของ SMTP -

เชื่อมต่อ() −

เมธอดนี้สร้างการเชื่อมต่อกับโฮสต์บนพอร์ตที่กำหนด

เข้าสู่ระบบ() −

ฟังก์ชันนี้ใช้อาร์กิวเมนต์ชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่ระบบเซิร์ฟเวอร์ SMTP

เลิก() −

ฟังก์ชันนี้จะยุติเซสชัน SMTP

ข้อมูล() −

อาร์กิวเมนต์ 'ข้อความ' ของฟังก์ชันนี้จะถูกส่งไปยังเซิร์ฟเวอร์

docmd ()−

ฟังก์ชันนี้ส่งคำสั่งและส่งคืนรหัสตอบกลับ

เอ๊ะ () −

ฟังก์ชันนี้ระบุเซิร์ฟเวอร์

starttls() −

ฟังก์ชันนี้เริ่มโหมด TLS

ตอบกลับ () −

ฟังก์ชันนี้ได้รับการตอบกลับจากเซิร์ฟเวอร์ในรูปแบบของรหัสตอบกลับ

putcmd () −

ฟังก์ชันนี้ส่งคำสั่งไปยังเซิร์ฟเวอร์

send_message() −

ฟังก์ชันนี้จะแปลงข้อความเป็นสตริงไบต์และส่งผ่านเพื่อส่งเมล

ส่งอีเมล () −

คำสั่งนี้ทำธุรกรรมอีเมลทั้งหมด

อาร์กิวเมนต์คือ −

from_addr
ที่อยู่สำหรับส่งอีเมลนี้
to_addrs
รายการที่อยู่สำหรับส่งจดหมายนี้
msg
ข้อความที่จะส่ง

รหัสด้านล่างใช้เซิร์ฟเวอร์ smtp ของ gmail เพื่อส่งอีเมล ออบเจ็กต์ SMTP ใช้เซิร์ฟเวอร์ smtp ของ gmail ที่พอร์ต 527 คำสั่ง ehlo() ระบุเซิร์ฟเวอร์ นอกจากนี้เรายังเปิดใช้งาน Transport Layer Security สำหรับข้อความอีเมลขาออก

ถัดไป คำสั่ง login() ถูกเรียกใช้โดยส่งข้อมูลประจำตัวเป็นอาร์กิวเมนต์ ในที่สุด ข้อความเมลจะถูกรวบรวมโดยแนบส่วนหัวในรูปแบบที่กำหนด และส่งโดยใช้วิธี sendmail() ออบเจ็กต์ SMTP จะปิดหลังจากนั้น

import smtplib
content="HelloWorld"
mail=smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
sender='pythonanytime@gmail.com'
recipient='mlathkar@gmail.com'
mail.login('pythonanytime@gmail.com','m15v5l61')
header='To:'+receipient+'\n'+'From:'\
+sender+'\n'+'subject:testmail\n'
content=header+content
mail.sendmail(sender,recipient, content)
mail.close()


ก่อนเรียกใช้สคริปต์ข้างต้น ตรวจสอบให้แน่ใจว่าบัญชี Gmail ของผู้ส่งได้รับสิทธิ์ในการเข้าถึง 'แอปที่มีความปลอดภัยน้อย'

https://myaccount.google.com/lesssecureapps

ตั้งค่าปุ่มสลับที่แสดงเป็นเปิด

ไคลเอนต์โปรโตคอล SMTP ใน Python (smtplib)

ดำเนินการสคริปต์ด้านบนหลังจากดำเนินการตั้งค่าข้างต้น ข้อความควรถูกส่งไปยังกล่องจดหมายของผู้รับ