Python利用smtplib實現(xiàn)郵件發(fā)送
1.引言
在當今數(shù)字時代,電子郵件已成為我們生活和工作中不可或缺的一部分。Python
中的 smtplib
庫提供了一個簡單的接口,使得發(fā)送電子郵件變得非常容易。通過Python可以方便地自動發(fā)送郵件,將郵件發(fā)送給客戶、同事或朋友,以及提醒你的任務列表或提醒你必須完成的工作。本篇文章將為你講解如何在Python
發(fā)送郵件,并為你提供實現(xiàn)的多種方式。不管你是初學者還是有一定編程經(jīng)驗的高級用戶,都能從中受益。 若要實現(xiàn)發(fā)送電子郵件,我們的大致思路可分為以下幾個步驟:
- 1.申請郵箱賬號(本文以163郵箱為例)
- 2.登錄:提供賬號密碼,并通過python smtplib庫登錄。
- 3.編輯郵件內容:包括發(fā)件人、收件人、抄送人、主題、郵件內容(文本、附件)等。
- 4.發(fā)送郵件。
2. POP3、SMTP、IMAP協(xié)議
POP3、IMAP、SMTP 都是與電子郵件相關的協(xié)議。 POP3(Post Office Protocol version 3) 是一種常用的電子郵件接收郵件協(xié)議,它允許用戶從遠程服務器下載自己的郵件收件箱中的郵件。它的主要缺點是如何管理收件箱中的郵件,即當用戶將電子郵件從服務器上下載到本地計算機時,它通常從服務器上刪除郵件,在某些情況下,會導致一些問題。
IMAP(Internet Message Access Protocol) 允許用戶遠程管理郵件服務器中的電子郵件。它提供了一種在客戶端計算機和郵件服務器之間保持持久化連接的方式,因此它在管理郵件上有更大的靈活性。它還提供了一種能夠讓用戶保存郵件的方式,即當用戶在客戶端中刪除電子郵件時,它不會從郵件服務器上刪除。
SMTP(Simple Mail Transfer Protocol) 是一個定義了郵件傳輸方式的簡單且基本的協(xié)議。它用于從一臺服務器(發(fā)送郵件的服務器)將郵件傳輸?shù)搅硪慌_服務器(接收郵件的服務器)。SMTP使用TCP/ IP協(xié)議來傳輸郵件,并使用25端口(默認情況下)。它允許用戶發(fā)送電子郵件以便其他用戶可以接收它。
3. 申請郵箱賬號
如圖所示,注冊并登錄郵箱后,我們需開啟客戶端登錄權限,并獲取到授權碼(此處以163郵箱為例)。
這些前置工作做好后,讓我們開始進入編程實操吧!
4.發(fā)送普通郵件
下面我們將使用Python內置的smtplib模塊和ssl模塊發(fā)送電子郵件。這個方法需要一些郵件服務器的相關信息,例如SMTP地址和端口號,以及登錄憑據(jù)(上面已經(jīng)準備好了)。具體步驟如下:
4.1 導入必要模塊
導入smtplib和ssl模塊,ssl模塊將保護您的登錄憑據(jù),確保安全發(fā)送電子郵件。
import smtplib, ssl
4.2 設置服務器和端口號
使用您的郵箱提供商提供的SMTP地址和端口號來設置SMTP服務器。根據(jù)您的郵箱,可以設置為不同的地址和端口號。
smtp_server = "smtp.163.com" port = 465# 對于TLS連接,我們使用465端口。
4.3 建立連接并登錄
使用SMTP服務器建立與服務器的連接。然后,使用您的發(fā)送電子郵件的電子郵件地址和密碼進行身份驗證。電子郵件與您的登錄密碼或其他訪問令牌是相互關聯(lián)的,因此此過程也稱為“登錄”。 下面是一個完整的Python示例,用于向收件人發(fā)送電子郵件:
# -*- coding: utf-8 import smtplib # 郵箱服務器相關配置 smtp_server = 'smtp.163.com' smtp_port = 465 # 發(fā)件人相關配置 mail_sender = 'liululee@163.com' # 發(fā)件人電子郵箱 mail_sender_password = 'XXXXXXXXXXXXXXXXXXX' # 發(fā)件人郵箱密碼 # 建立到郵件服務器的加密連接 server = smtplib.SMTP_SSL(smtp_server, smtp_port) server.login(mail_sender, mail_sender_password) # 郵件內容 receiver_email = "729235361@qq.com" message = "\n".join([ ? ? "Subject: Test email", ? ? "To: {}".format(receiver_email), ? ? "From: {}".format(mail_sender), ? ? "", ? ? "This is a test email sent with Python." ]) # 發(fā)送郵件 server.sendmail(mail_sender, receiver_email, message) print("Email sent successfully.")
成功收到郵件:
5.發(fā)送復雜郵件
接下來,我們使用email模塊相關的組件來實現(xiàn)發(fā)送復雜郵件,它可以?來構建郵件主題以及各種形式的郵件內容(包括文字內容、圖片內容、html內容、附件)等,當我們發(fā)送復雜郵件時,使用它非常便利。
## -*- coding: utf-8 import smtplib, ssl from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header # 郵箱服務器相關配置 smtp_server = 'smtp.163.com' smtp_port = 465 # 發(fā)件人相關配置 mail_sender = 'liululee@163.com' # 發(fā)件人電子郵箱 mail_sender_password = 'XXXXXXXXXXXXXXXXX' # 發(fā)件人郵箱密碼 # 創(chuàng)建SSL類的上下文對象 context = ssl.create_default_context() # 建立到郵件服務器的加密連接 server = smtplib.SMTP_SSL(smtp_server, smtp_port) server.login(mail_sender, mail_sender_password) # 郵件內容 receiver_email = "729235361@qq.com" # message = "\n".join([ # ? ? "Subject: Test email", # ? ? "To: {}".format(receiver_email), # ? ? "From: {}".format(mail_sender), # ? ? "", # ? ? "This is a test email sent with Python." # ]) # 1.創(chuàng)建郵件對象 message = MIMEMultipart() # 2.設置郵件主題 subject = Header('來自poycode.cn的晚安問候', 'utf-8').encode() message['Subject'] = subject # 3.設置發(fā)送者 message['From'] = mail_sender # 4.設置接收者 message['To'] = receiver_email # 5.設置抄送者 message['Cc'] = 'developlee@163.com' # 6.添加文字內容 ## 6.1 普通文字 text = MIMEText('Hi, 歡迎你訪問我的個人站點 poycode.cn ', 'plain', 'utf-8') message.attach(text) ## 6.2 超文本內容 # 添加html內容 content = """ <h2>陸理手記</h2> <p>來自poycode.cn</p> <p>感謝你關注我的公眾號</p> <img src='https://static.poycode.cn/wp-content/uploads/2023/06/20230602225540172.jpg'> <center>陸理手記公眾號二維碼</center> <a >陸理手記-個人博客</a> """ htmltext = MIMEText(content, 'html', 'utf-8') message.attach(htmltext) # 7.添加附件 attachment = MIMEText(open('poycode.txt', 'rb').read(), 'base64', 'utf-8') attachment["Content-Disposition"] = 'attachment; filename="poycode.txt"' message.attach(attachment) # 發(fā)送郵件 server.sendmail(mail_sender, receiver_email, message.as_string()) server.quit() print("Email sent successfully.")
郵件收到了!很快??!
6.總結
上一篇教程:Python基礎教程:requests模塊發(fā)送http請求 Python中的smtplib模塊可用于發(fā)送電子郵件,它提供了一種方便易用的方式來處理郵件。在教程中,通過使用email模塊,使得我們可以發(fā)送更為復雜的郵件。通過Python發(fā)送郵件與其它功能,如定時任務、告警等功能相結合,可以幫助我們更好地處理日常工作。希望這篇教程能夠幫助到您!以上的步驟應用于Python郵件發(fā)送的基本過程,您可以根據(jù)自己的需要對代碼進行修改和改進。
以上就是Python利用smtplib實現(xiàn)郵件發(fā)送的詳細內容,更多關于Python smtplib發(fā)送郵件的資料請關注腳本之家其它相關文章!
相關文章
Python re.split方法分割字符串的實現(xiàn)示例
本文主要介紹了Python re.split方法分割字符串的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08Python?PaddleGAN實現(xiàn)照片人物性別反轉
PaddleGAN中的styleganv2editing.py是支持性別編輯的。所以本文將介紹如何通過調整參數(shù),來試著實現(xiàn)一下照片的性別翻轉。感興趣的小伙伴可以學習一下2021-12-12Python連接SQLite數(shù)據(jù)庫操作實戰(zhàn)指南從入門到精通
在Python中使用SQLite進行數(shù)據(jù)庫操作時,我們將深入研究SQLite數(shù)據(jù)庫的創(chuàng)建、表格管理、數(shù)據(jù)插入、查詢、更新和刪除等關鍵主題,幫助你全面了解如何使用SQLite進行數(shù)據(jù)庫操作2023-11-11