【selenium+Python unittest】之發送郵箱時報錯:smtplib.SMTPDataError、smtplib.SMTPAuthenticationError(例:126郵箱)
阿新 • • 發佈:2018-02-03
pytho data 密碼 nec user 郵箱 ati width mtp
原代碼如下:
import smtplib from email.mime.text import MIMEText from email.header import Header #要發送的服務器 smtpserver = ‘smtp.126.com‘ #要發送的郵箱用戶名/密碼 user = ‘[email protected]‘ password = ‘XXX‘ #發送的郵箱 sender = ‘[email protected]‘ #接收的郵箱 receiver = ‘[email protected]‘ #發送郵箱主題 subject = ‘test_mail‘ #編寫HTML類型的郵件正文 msg = MIMEText(‘<html><h1>大佬好!</h1></html>‘,‘html‘,‘utf-8‘) msg[‘Subject‘] = Header(subject,‘utf-8‘) #連接發送郵件 smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(user,password) smtp.sendmail(sender,receiver,msg.as_string()) smtp.quit()
一、現象:
發送郵件時,運行時報錯smtplib.SMTPDataError,如下圖:
二、解決辦法
①經網上查詢得知:因為126郵箱中沒有開啟【授權碼】,如下圖所示應該開啟:
②但是再次運行代碼還是報錯:smtplib.SMTPAuthenticationError,如下圖,提示登陸失敗:
原因是:代碼中的密碼應該改為授權密碼即可。
③繼續運行後,但是代碼還是報錯:smtplib.SMTPDataError:(554, b‘DT:SPM 126 smtp4
報錯原因是沒有加上下面的代碼:
#報錯原因是因為“發件人和收件人參數沒有進行定義 msg[‘from‘] = ‘[email protected]‘ msg[‘to‘] = ‘[email protected]‘
加上之後,終於解決發送郵件失敗的問題了。
完整代碼如下:(因保密自行替換)
import smtplib from email.mime.text import MIMEText from email.header import Header #要發送的服務器 smtpserver = ‘smtp.126.com‘ #要發送的郵箱用戶名/密碼 user = ‘[email protected]‘ password = ‘XXX‘ #發送的郵箱 sender = ‘[email protected]‘ #接收的郵箱 receiver = ‘[email protected]‘ #發送郵箱主題 subject = ‘test_mail‘ #編寫HTML類型的郵件正文 msg = MIMEText(‘<html><h1>大佬好!</h1></html>‘,‘html‘,‘utf-8‘) msg[‘Subject‘] = Header(subject,‘utf-8‘) msg[‘from‘] = ‘[email protected]‘ msg[‘to‘] = ‘[email protected]‘ #連接發送郵件 smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(user,password) smtp.sendmail(sender,receiver,msg.as_string()) smtp.quit()
【selenium+Python unittest】之發送郵箱時報錯:smtplib.SMTPDataError、smtplib.SMTPAuthenticationError(例:126郵箱)