ไลบรารีมาตรฐานของ 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='[email protected]' recipient='[email protected]' mail.login('[email protected]','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
ตั้งค่าปุ่มสลับที่แสดงเป็นเปิด
ดำเนินการสคริปต์ด้านบนหลังจากดำเนินการตั้งค่าข้างต้น ข้อความควรถูกส่งไปยังกล่องจดหมายของผู้รับ