python中執(zhí)行smtplib失敗的處理方法
經(jīng)測(cè)試可用的發(fā)送郵件代碼:
import smtplib from email.mime.text import MIMEText # 第三方 SMTP 服務(wù) mail_host = "smtp.163.com" # SMTP服務(wù)器 mail_user = "username" # 用戶(hù)名 mail_pass = "passwd" # 密碼(這里的密碼不是登錄郵箱密碼,而是授權(quán)碼) sender = 'sender_mail@163.com' # 發(fā)件人郵箱 receivers = ['receive_mail@qq.com'] # 接收人郵箱 content = 'Python Send Mail !' title = 'Python SMTP Mail Test' # 郵件主題 message = MIMEText(content, 'plain', 'utf-8') # 內(nèi)容, 格式, 編碼 message['From'] = "{}".format(sender) message['To'] = ",".join(receivers) message['Subject'] = title try: smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 啟用SSL發(fā)信, 端口一般是465 smtpObj.login(mail_user, mail_pass) # 登錄驗(yàn)證 smtpObj.sendmail(sender, receivers, message.as_string()) # 發(fā)送 print("mail has been send successfully.") except smtplib.SMTPException as e: print(e)
問(wèn)題解決與注意點(diǎn):
1.報(bào)錯(cuò):Error: A secure connection is requiered(such as ssl)
解決:因?yàn)猷]箱SSL驗(yàn)證的問(wèn)題,因此把smtplib.SMTP()改成smtplib.SMTP_SSL(),端口號(hào)為465。
2.報(bào)錯(cuò):535, b'Error: authentication failed'
解決:可能是由于用戶(hù)名不正確,因此代碼中的用戶(hù)名應(yīng)該填寫(xiě)為郵箱地址@前面部分 ,或是在郵箱設(shè)置的帳戶(hù)昵稱(chēng)。
3.SMTP服務(wù)器可根據(jù)發(fā)送的郵箱做相應(yīng)的選擇,如代碼中使用163郵箱則設(shè)為mail_host = "smtp.163.com",
可以改成"smtp.126.com"、"smtp.qq.com"等等。
4.代碼中的密碼mail_pass為授權(quán)碼,并非郵箱密碼,授權(quán)碼用于登錄第三方郵件客戶(hù)端的專(zhuān)用密碼,
QQ郵箱可通過(guò)設(shè)置→帳戶(hù)→生成授權(quán)碼;網(wǎng)易郵箱126/163可通過(guò)設(shè)置→客戶(hù)端授權(quán)密碼。
知識(shí)點(diǎn)擴(kuò)展:
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝。
smtp協(xié)議的基本命令包括:
- HELO 向服務(wù)器標(biāo)識(shí)用戶(hù)身份
- MAIL 初始化郵件傳輸 mail from:
- RCPT 標(biāo)識(shí)單個(gè)的郵件接收人;常在MAIL命令后面,可有多個(gè)rcpt to:
- DATA 在單個(gè)或多個(gè)RCPT命令后,表示所有的郵件接收人已標(biāo)識(shí),并初始化數(shù)據(jù)傳輸,以.結(jié)束
- VRFY 用于驗(yàn)證指定的用戶(hù)/郵箱是否存在;由于安全方面的原因,服務(wù)器常禁止此命令
- EXPN 驗(yàn)證給定的郵箱列表是否存在,擴(kuò)充郵箱列表,也常被禁用
- HELP 查詢(xún)服務(wù)器支持什么命令
- NOOP 無(wú)操作,服務(wù)器應(yīng)響應(yīng)OK
- QUIT 結(jié)束會(huì)話
- RSET 重置會(huì)話,當(dāng)前傳輸被取消
- MAIL FROM 指定發(fā)送者地址
- RCPT TO 指明的接收者地址
到此這篇關(guān)于python中執(zhí)行smtplib失敗的處理方法的文章就介紹到這了,更多相關(guān)python中執(zhí)行smtplib失敗如何處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解python中實(shí)例方法的第一個(gè)參數(shù)self
在Python中,self?是類(lèi)的實(shí)例方法的一個(gè)參數(shù),代表類(lèi)的實(shí)例對(duì)象本身,在本篇文章中,我們將深入探討?self?的工作原理以及它在Python編程中的重要性,需要的可以參考下2023-09-09零基礎(chǔ)也能看懂的python內(nèi)置csv模塊教程
這篇博客就為你介紹一個(gè)知識(shí)點(diǎn),python 內(nèi)置模塊 csv 。讓大家一文就看懂csv csv(Comma-Separated Values)文件是什么?以及python 中的 csv 文件清晰解法讀取文件寫(xiě)入文件 csv 文件其它說(shuō)明2021-11-11python使用Flask框架獲取用戶(hù)IP地址的方法
這篇文章主要介紹了python使用Flask框架獲取用戶(hù)IP地址的方法,實(shí)例分析了Python使用Flask框架remote_addr獲取IP的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03在VSCode中搭建Python開(kāi)發(fā)環(huán)境并進(jìn)行調(diào)試
這篇文章介紹了在VSCode中搭建Python開(kāi)發(fā)環(huán)境并進(jìn)行調(diào)試的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06python隊(duì)列通信:rabbitMQ的使用(實(shí)例講解)
下面小編就為大家分享一篇python隊(duì)列通信:rabbitMQ的使用(實(shí)例講解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12Python調(diào)用系統(tǒng)底層API播放wav文件的方法
這篇文章主要介紹了Python調(diào)用系統(tǒng)底層API播放wav文件的方法,涉及Python使用pywin32調(diào)用系統(tǒng)底層API讀取與播放wav文件的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08