一、SMTP協議簡介
SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,是一種在TCP/IP協議族下的電子郵件傳輸的標準協議。SMTP協議默認使用25端口,傳輸的是純文本數據,因此常常被黑客利用進行垃圾郵件的發送。SMTP協議有發送方和接收方兩個角色,通過SMTP客戶端(如Outlook等)和SMTP服務器(如網易郵箱、Gmail等)之間的通信,實現郵件的傳輸。
二、Python SMTP模塊簡介
Python提供了SMTP模塊,可以使用Python實現電子郵件的發送。使用SMTP模塊,需要先連接到SMTP服務器,驗證登錄信息,然後才能發送郵件。SMTP模塊提供了一系列方法,如SMTP()、login()、sendmail()等,用於實現連接SMTP服務器、登錄SMTP服務器以及發送郵件等操作。
三、構建郵件主體內容
在發送郵件之前,需要構建郵件主體內容。郵件主體主要包括郵件的發送者、接收者、主題、內容等信息。郵件主題和內容通常是純文本信息,可以通過Python內置的郵件模塊email來實現。在構建郵件主體內容時,需要導入email、MIMEText、MIMEMultipart等相關模塊,使用這些模塊構建郵件主體,再將其發送給SMTP服務器。
四、Python SMTP發送郵件示例代碼
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header # SMTP服務器地址和端口號 smtp_server = 'smtp.exmail.qq.com' smtp_port = 25 # 發送者郵箱地址和SMTP登錄密碼 sender = 'example@example.com' password = 'password' # 接收者郵箱地址 receiver = 'example2@example.com' # 郵件主題 subject = 'Python SMTP發送郵件示例' # 郵件正文 content = '這是一封使用Python SMTP發送的郵件。
' # 構建郵件主體 message = MIMEMultipart() message['From'] = Header(sender, 'utf-8') message['To'] = Header(receiver, 'utf-8') message['Subject'] = Header(subject, 'utf-8') # 郵件正文 message.attach(MIMEText(content, 'html', 'utf-8')) # 連接SMTP服務器並發送郵件 try: smtpObj = smtplib.SMTP(smtp_server, smtp_port) smtpObj.login(sender, password) smtpObj.sendmail(sender, [receiver], message.as_string()) print("郵件發送成功") except smtplib.SMTPException: print("郵件發送失敗")
五、代碼解析
1、導入所需模塊:
使用Python SMTP發送郵件需要導入smtplib、email.mime.text、email.mime.multipart、email.header等模塊,這些模塊提供了構建郵件主體、連接SMTP服務器、登錄SMTP服務器以及發送郵件等功能。
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header
2、定義SMTP服務器地址和端口號:
SMTP服務器地址是發送郵件需要連接的服務器地址,端口號是SMTP使用的端口號。例如使用網易郵箱發送郵件需要連接smtp.163.com,並使用25端口。
smtp_server = 'smtp.exmail.qq.com' smtp_port = 25
3、定義發送者郵箱地址和SMTP登錄密碼:
發送者郵箱地址是將要使用SMTP服務器發送的郵件的發件人地址,SMTP登錄密碼是連接SMTP服務器時需要驗證的登錄密碼。
sender = 'example@example.com' password = 'password'
4、定義接收者郵箱地址:
接收者郵箱地址是將要發送的郵件的收件人地址。
receiver = 'example2@example.com'
5、定義郵件主題和正文:
郵件主題和正文分別是將要發送的郵件的主題和內容。在正文中使用了HTML標籤,需要進行HTML實體化,以避免瀏覽器解析。
subject = 'Python SMTP發送郵件示例' content = '<p>這是一封使用Python SMTP發送的郵件。</p>'
6、構建郵件主體:
通過MIMEMultipart類來構建郵件主體,包括郵件頭部信息和郵件正文信息。其中郵件頭部信息包括發件人、收件人、主題等信息,郵件正文信息則包括郵件的正文內容。
message = MIMEMultipart() message['From'] = Header(sender, 'utf-8') message['To'] = Header(receiver, 'utf-8') message['Subject'] = Header(subject, 'utf-8') message.attach(MIMEText(content, 'html', 'utf-8'))
7、連接SMTP服務器並發送郵件:
通過smtplib模塊中的SMTP對象,連接SMTP服務器並進行身份驗證,然後使用SMTP對象中的sendmail方法將郵件發送給指定的收件人。
try: smtpObj = smtplib.SMTP(smtp_server, smtp_port) smtpObj.login(sender, password) smtpObj.sendmail(sender, [receiver], message.as_string()) print("郵件發送成功") except smtplib.SMTPException: print("郵件發送失敗")
六、總結
Python SMTP模塊提供了便捷的郵件發送功能,可以通過構建郵件主體內容、連接SMTP服務器並進行身份驗證以及使用SMTP對象發送郵件,實現簡單高效的郵件發送功能。使用Python SMTP發送郵件,需要注意郵箱授權碼等安全信息不要暴露,以防止黑客利用SMTP協議進行垃圾郵件的發送。
原創文章,作者:FAEN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/137486.html