Python實現(xiàn)郵件發(fā)送功能的示例詳解
想實現(xiàn)發(fā)送郵件需要經(jīng)過以下幾步:
1、登錄郵件服務器
2、構(gòu)造符合郵件協(xié)議規(guī)則要求的郵件內(nèi)容
3、發(fā)送
Python對SMTP支持有smtplib和email兩個模塊,email負責構(gòu)造郵件,smtplib負責發(fā)送郵件,它對smtp協(xié)議進行了簡單的封裝。
這里我們用qq郵箱為例,并且自己是可以給自己發(fā)郵件的。
在開始前我們先做準備工作:
登錄qq郵箱,后點擊“設置”
點擊“賬戶”
確保前兩項已開啟,然后點擊生成授權(quán)碼。
因為我們網(wǎng)頁登錄時的密碼是不可以用來python上使用;qq為了安全,我們平常用網(wǎng)頁或者qq官方的客戶端可以用我們的qq密碼登錄,但是第三方(比如python)是不可以登錄的。
所以要生成第三方授權(quán)碼。
代碼
import smtplib from email.mime.text import MIMEText # 郵件正文 from email.header import Header # 郵件頭 # 登錄郵件服務器 smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 發(fā)件人的SMTP服務器,端口號25 smtp_obj.login("你的qq賬號", 'admc********') # 括號中的內(nèi)容分別是發(fā)件人郵箱賬號、授權(quán)碼 smtp_obj.set_debuglevel(1) # 顯示調(diào)試信息,可以不用寫 # 設置郵件頭信息 msg = MIMEText("測試用Python發(fā)送email。", "plain", "utf-8") # 正文內(nèi)容 msg['From'] = Header("小天天", 'utf-8') # 發(fā)件人名字 msg["To"] = Header("有緣人", "UTF-8") # 接收者名字 msg["Subject"] = Header('用Python發(fā)送郵件2022', 'utf-8') # 主題 # 發(fā)送 smtp_obj.sendmail('發(fā)送人郵箱', ['接收人郵箱'], msg.as_string()) #第一個是發(fā)送人郵箱;第二個是數(shù)組,說明可以給多個人發(fā)送;msg就是剛剛寫的發(fā)送內(nèi)容。
運行代碼
細節(jié):SMTP使用是25端口,SSL使用的是456端口;SMTP是明文發(fā)送,SSL是加密發(fā)送
發(fā)送html格式的內(nèi)容
import smtplib from email.mime.text import MIMEText # 郵件正文 from email.header import Header # 郵件頭 # 登錄郵件服務器 smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 發(fā)件人的SMTP服務器,端口號25 smtp_obj.login("2308748900", 'admcwiwxxgmwdifh') # 括號中的內(nèi)容分別是發(fā)件人郵箱賬號、郵箱密碼 smtp_obj.set_debuglevel(1) # 顯示調(diào)試信息,可以不用寫 # 設置郵件頭信息 # HTML msg_body=''' <h4>python發(fā)送html格式的郵件</h4> <p> 測試用HTML格式發(fā)送郵件 </p> ''' msg = MIMEText(msg_body, "html", "utf-8") # 將plain改成html msg['From'] = Header("小天天", 'utf-8') # 發(fā)件人名字 msg["To"] = Header("有緣人", "UTF-8") # 接收者名字 msg["Subject"] = Header('用Python發(fā)送郵件2022', 'utf-8') # 主題 # 發(fā)送 smtp_obj.sendmail('2308748900@qq.com', ['2308748900@qq.com'], msg.as_string())
主要代碼和上面基本一樣,只是將文本改成html的代碼內(nèi)容而已
到此這篇關(guān)于Python實現(xiàn)郵件發(fā)送功能的示例詳解的文章就介紹到這了,更多相關(guān)Python郵件發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python學習筆記之Zip和Enumerate用法實例分析
這篇文章主要介紹了Python學習筆記之Zip和Enumerate用法,結(jié)合實例形式分析了Zip和Enumerate的功能、用法及相關(guān)操作注意事項,需要的朋友可以參考下2019-08-08OpenCV+MediaPipe實現(xiàn)手部關(guān)鍵點識別
這篇文章主要介紹了如何通過OpenCV MediaPipe實現(xiàn)手部關(guān)鍵點識別,文中的示例代碼講解詳細,對我們學習或工作有一定的價值,需要的可以參考一下2022-01-01Python3使用tracemalloc實現(xiàn)追蹤mmap內(nèi)存變化
這篇文章主要為大家詳細介紹了在Python3中如何使用tracemalloc實現(xiàn)追蹤mmap內(nèi)存變化,文中的示例代碼講解詳細,感興趣的可以了解一下2023-03-03