一、Python SMTP模塊簡介
Python SMTP(Simple Mail Transfer Protocol)模塊是Python標準庫中內置的郵件處理模塊。通過SMTP模塊,可以在Python程序中實現郵件發送和接收功能。SMTP模塊提供了一些類和方法,可以用於構造電子郵件和發送電子郵件。
發送郵件通常需要SMTP伺服器的支持,Python SMTP模塊可以與SMTP伺服器進行通信,通過SMTP伺服器將郵件發送出去。本文將以使用本地SMTP伺服器為例,介紹如何使用Python SMTP模塊發送電子郵件。
二、連接本地SMTP伺服器
使用Python SMTP發送電子郵件的第一步是連接SMTP伺服器。Python SMTP模塊中提供了SMTP類,可以用於連接SMTP伺服器。SMTP類的構造函數需要傳遞兩個參數:SMTP伺服器地址和SMTP伺服器埠號。
import smtplib smtp_server = 'localhost' smtp_port = 25 smtp = smtplib.SMTP(smtp_server, smtp_port)
在這裡,我們使用SMTP伺服器地址為’localhost’,埠號為25。如果你的SMTP伺服器地址和埠號不同,需要修改以上代碼。
三、構造電子郵件
使用SMTP連接SMTP伺服器後,就可以開始構造電子郵件。
使用Python SMTP模塊構造電子郵件涉及三個類:EmailMessage、MIMEText和MIMEMultipart。
雖然可以使用EmailMessage類創建電子郵件,但更通用且靈活的方法是使用MIMEMultipart類。MIMEMultipart類是多部分郵件的基類,可以方便地添加文本、圖片、附件等多種內容。
以下是使用MIMEMultipart類構造簡單文本郵件的示例代碼:
from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText msg = MIMEMultipart('alternative') msg['From'] = 'sender@example.com' msg['To'] = 'recipient@example.com' msg['Subject'] = 'Test email' text = 'This is a test email' body = MIMEText(text, 'plain') msg.attach(body)
以上代碼定義了一個MIMEMultipart對象,並設置了郵件的基本信息。郵件正文的內容為簡單的文本,通過MIMEText類構造。最後,將郵件正文附加到MIMEMultipart對象上。
四、發送郵件
構造完電子郵件後,使用SMTP類實例的sendmail方法將郵件發送到SMTP伺服器。sendmail方法需要傳遞三個參數:發件人、收件人和郵件內容。
以下是發送郵件的示例代碼:
smtp.sendmail('sender@example.com', 'recipient@example.com', msg.as_string()) smtp.quit()
以上代碼中,使用SMTP類實例的sendmail方法發送郵件,需要傳遞發件人郵箱地址、收件人郵箱地址和郵件內容。使用MIMEMultipart對象的as_string方法生成郵件內容字元串,並將其作為sendmail方法的第三個參數傳遞。
五、完整示例
以下是使用Python SMTP模塊在本地伺服器中發送簡單文本郵件的完整示例代碼:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText smtp_server = 'localhost' smtp_port = 25 smtp_username = 'username' smtp_password = 'password' msg = MIMEMultipart('alternative') msg['From'] = 'sender@example.com' msg['To'] = 'recipient@example.com' msg['Subject'] = 'Test email' text = 'This is a test email' body = MIMEText(text, 'plain') msg.attach(body) smtp = smtplib.SMTP(smtp_server, smtp_port) smtp.login(smtp_username, smtp_password) smtp.sendmail('sender@example.com', 'recipient@example.com', msg.as_string()) smtp.quit()
以上代碼中,涵蓋了SMTP連接、郵件構造和發送郵件的全部流程。將代碼保存為send_email.py文件,並執行python send_email.py即可發送郵件。
原創文章,作者:LPKD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137913.html