QQ郵箱最新推出了一個授權碼,需已驗證的手機號向QQ郵箱服務器發送一條短信獲得。該授權碼用于第三方客戶端登錄,代替了第三方登錄時使用的個人郵箱密碼。
在測試過程中遇到兩個問題:
1.提示需建立SSL安全連接。于是將smtplib.SMTP() 改成了smtplib.SMTP_SSL()
2.運行代碼后,程序一直運行,但沒有任何反應,等了五分鐘左右,最后只好ctrl+c停止。查原因才知道,QQ郵箱的SMTP服務端口不是默認的25.改為465之后就好了。
(使用標準的25端口連接SMTP服務器時,使用的是明文傳輸,發送郵件的整個過程可能會被竊聽。要更安全地發送郵件,可以加密SMTP會話,實際上就是先創建SSL安全連接,然后再使用SMTP協議發送郵件。)
3.運行提示535錯誤,說授權error。才知道是那個授權碼的原因。于是趕緊獲取郵箱的授權碼。

3.運行提示535錯誤,說授權error。才知道是那個授權碼的原因。于是趕緊獲取郵箱的授權碼。

最后測試終于好了,代碼如下:
#coding:utf-8import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 第三方 SMTP 服務mail_host="smtp.qq.com" #設置服務器mail_user="******@qq.com" #用戶名mail_pass="*********" #口令,QQ郵箱是輸入授權碼,在qq郵箱設置 里用驗證過的手機發送短信獲得,不含空格sender = '******qq.com'receivers = ['******@qq.com','****@sina.com.cn'] # 接收郵件,可設置為你的QQ郵箱或者其他郵箱message = MIMEText('a test for python', 'plain', 'utf-8')message['From'] = Header("ppyy", 'utf-8')message['To'] = Header("you", 'utf-8')subject = 'my test'message['Subject'] = Header(subject, 'utf-8')try: smtpObj = smtplib.SMTP_SSL(mail_host, 465) smtpObj.login(mail_user,mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) smtpObj.quit() print u"郵件發送成功"except smtplib.SMTPException,e: print e以上這篇淺談Python用QQ郵箱發送郵件時授權碼的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答