ไลบรารีมาตรฐานของ Python มีโมดูล 'smtplib' ซึ่งกำหนดอ็อบเจ็กต์เซสชันไคลเอนต์ SMTP ที่สามารถใช้ส่งอีเมลผ่านโปรแกรม Python ได้
เซิร์ฟเวอร์จดหมายเป็นแอปพลิเคชันที่จัดการและส่งอีเมลผ่านอินเทอร์เน็ต เซิร์ฟเวอร์จดหมายขาออกใช้งาน SMTP (Simple Mail Transfer Protocol) ซึ่งเป็นมาตรฐานอินเทอร์เน็ตสำหรับการส่งอีเมล
เซิร์ฟเวอร์จดหมายขาเข้า มี 2 แบบหลัก POP3 (Post Office Protocol) และ IMAP (Internet Message Access Protocol)
ฟังก์ชัน smtplib.SMTP()
ฟังก์ชันนี้คืนค่าอ็อบเจ็กต์ของคลาส SMTP มันห่อหุ้มและจัดการการเชื่อมต่อกับเซิร์ฟเวอร์ SMTP หรือ ESMTP อาร์กิวเมนต์ต่อไปนี้ถูกกำหนดในลายเซ็นของฟังก์ชันนี้:
| host | สตริงที่เป็นชื่อโฮสต์ระยะไกลที่จะเชื่อมต่อ |
| port | หมายเลขที่ระบุพอร์ตที่จะเชื่อมต่อ โดยค่าเริ่มต้นใช้ smtplib.SMTP_PORT |
| local_hostname | ใช้เป็น FQDN ของโฮสต์ท้องถิ่นในคำสั่ง HELO/EHLO |
| source_address | อ็อบเจ็กต์ 2-tuple (host, port) ที่โซเก็ตจะผูก |
มีเมธอดต่อไปนี้ที่รองรับการดำเนินการ SMTP:
connect() - เมธอดนี้สร้างการเชื่อมต่อกับโฮสต์บนพอร์ตที่กำหนด
login() - ฟังก์ชันนี้รับอาร์กิวเมนต์ username และ password เพื่อล็อกอินเข้าสู่เซิร์ฟเวอร์ SMTP
quit() - ฟังก์ชันนี้ยุติเซสชัน SMTP
data() - อาร์กิวเมนต์ 'message' ของฟังก์ชันนี้จะถูกส่งไปยังเซิร์ฟเวอร์
docmd() - ฟังก์ชันนี้ส่งคำสั่งและคืนค่ารหัสตอบกลับ
ehlo() - ฟังก์ชันนี้ระบุตัวตนของเซิร์ฟเวอร์
starttls() - ฟังก์ชันนี้เริ่มโหมด TLS
getreply() - ฟังก์ชันนี้รับการตอบกลับจากเซิร์ฟเวอร์ในรูปแบบรหัสตอบกลับ
putcmd() - ฟังก์ชันนี้ส่งคำสั่งไปยังเซิร์ฟเวอร์
send_message() - ฟังก์ชันนี้แปลงข้อความเป็นสตริงไบต์และส่งต่อไปยังการส่งเมล
sendmail() - คำสั่งนี้ดำเนินการธุรกรรมเมลทั้งหมด
อาร์กิวเมนต์คือ:
| from_addr | ที่อยู่ที่ส่งเมลนี้ |
| to_addrs | รายการที่อยู่ที่จะส่งเมลนี้ไป |
| msg | ข้อความที่จะส่ง |
โค้ดด้านล่างใช้เซิร์ฟเวอร์ SMTP ของ Gmail เพื่อส่งอีเมล อ็อบเจ็กต์ SMTP ใช้เซิร์ฟเวอร์ SMTP ของ Gmail ที่พอร์ต 587 คำสั่ง ehlo() ระบุตัวตนของเซิร์ฟเวอร์ เรายังเปิดใช้งาน Transport Layer Security สำหรับข้อความจดหมายขาออก
ต่อมา เรียกคำสั่ง login() โดยส่งข้อมูลประจำตัวเป็นอาร์กิวเมนต์ สุดท้าย ข้อความจดหมายถูกประกอบโดยต่อส่วนหัว (header) ในรูปแบบที่กำหนด และส่งโดยใช้เมธอด sendmail() อ็อบเจ็กต์ SMTP ถูกปิดหลังจากนั้น
import smtplib
content = "Hello World"
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:' + recipient + '\n' + 'From:' + sender + '\n' + 'subject:testmail\n'
content = header + content
mail.sendmail(sender, recipient, content)
mail.close()
ก่อนรันสคริปต์ข้างต้น ตรวจสอบว่าบัญชี Gmail ของผู้ส่งได้รับอนุญาตให้เข้าถึง 'less secure apps':
https://myaccount.google.com/lesssecureapps
ตั้งค่าปุ่ม toggle ที่แสดงให้เป็น ON

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