電子郵件已成為人們日常溝通中不可或缺的工具,同時也逐漸成為企業間聯繫的重要方式。如今,Python的廣泛應用和強大的處理能力讓我們可以使用Python發送電子郵件。Python自帶的smtplib庫提供了SMTP(Simple Mail Transfer Protocol)客戶端實現,可以讓我們方便地編寫Python程序來發送郵件。
一、SMTP協議簡介
SMTP(Simple Mail Transfer Protocol)是用於電子郵件傳輸的協議。SMTP客戶端最常見的用途是將郵件從本地電腦發送到郵件伺服器,郵件伺服器再將郵件發送給接收者。
SMTP使用21號埠進行通信,SMTP伺服器使用25號埠開放。由於安全原因,現在許多郵件伺服器不允許未經身份驗證的SMTP連接,因此我們在發送郵件時需要提供身份驗證信息。
二、Python發送電子郵件
使用Python發送電子郵件可以通過smtplib庫實現。smtplib庫是Python標準庫中的一個模塊,提供了一個SMTP客戶端實現,可以讓我們方便地編寫Python程序來發送郵件。在使用smtplib庫之前,我們需要先進行以下步驟:
1、先在郵箱設置中開啟SMTP服務,並獲取SMTP伺服器地址和埠號(一般為25)。
2、Python代碼中需要使用SMTP服務的賬號和密碼進行身份驗證。
三、Python使用smtplib發送電子郵件的示例代碼
import smtplib from email.mime.text import MIMEText from email.utils import formataddr # 發件人郵箱賬號 sender_email = 'your_sender_email_address' # 發件人郵箱授權碼 sender_password = 'your_sender_email_password' # 收件人郵箱賬號 receiver_email = 'your_receiver_email_address' # 郵件內容 mail_text = '這是一封測試郵件。' # 郵件主題 mail_subject = 'Python發送郵件測試' # 郵件正文的 MIMEText 對象 mail_text_obj = MIMEText(mail_text, 'plain', 'utf-8') # 創建SMTP客戶端 smtp_client = smtplib.SMTP_SSL('smtp.qq.com', 465) # qq郵箱的SMTP伺服器和埠號 try: # 登錄SMTP伺服器 smtp_client.login(sender_email, sender_password) # 設置發件人和收件人 msg = MIMEText(mail_text, 'plain', 'utf-8') msg['From'] = formataddr(('發件人昵稱', sender_email)) msg['To'] = formataddr(('收件人昵稱', receiver_email)) msg['Subject'] = mail_subject # 發送郵件 smtp_client.sendmail(sender_email, [receiver_email], msg.as_string()) print("郵件發送成功!") except Exception as e: print("郵件發送失敗!", e) finally: smtp_client.quit()
在這個例子中,我們使用了Python中email模塊的MIMEText類來構建郵件正文。這個類的第一個參數是郵件正文的內容,第二個參數是郵件的類型(這裡使用plain即純文本),第三個參數是郵件的字符集編碼。
然後我們創建了一個SMTP客戶端對象smtp_client,使用SMTP_SSL()方法連接到QQ郵箱的SMTP伺服器(465號埠是QQ郵箱允許使用的SSL加密埠),並進行賬戶密碼的身份驗證。
最後,我們使用login()方法登錄SMTP伺服器,使用MIMEText類構造完整的郵件內容,將郵件發送給收件人地址,使用quit()方法關閉SMTP客戶端對象。
四、小結
Python的smtplib庫提供了SMTP客戶端實現,可以讓我們方便地編寫Python程序來發送電子郵件。通過設置發件人和收件人的郵件地址,設置郵件的主題和正文,我們就可以使用Python發送電子郵件了。
在使用Python發送電子郵件時,我們需要遵循SMTP協議,並且需要提供發件人郵箱和密碼來進行身份驗證。此外,我們還需注意郵件內容的格式和編碼方式,在設置發件人和收件人地址時需要保證地址的正確性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307119.html