【selenium+Python unittest】之使用smtplib發送郵件錯誤:smtplib.SMTPDataError:(554)、smtplib.SMTPAuthenticationError(例:126郵箱)


原代碼如下:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

#要發送的服務器
smtpserver = 'smtp.126.com'
#要發送的郵箱用戶名/密碼
user = 'XXX@126.com'
password = 'XXX'
#發送的郵箱
sender = 'XXX@126.com'
#接收的郵箱
receiver = 'XXX@qq.com'
#發送郵箱主題
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'] = 'test_bug@126.com'
msg['to'] = 'testyao@163.com'

 

加上之后,終於解決發送郵件失敗的問題了。

 

完整代碼如下:(因保密自行替換)

 

import smtplib
from email.mime.text import MIMEText
from email.header import Header

#要發送的服務器
smtpserver = 'smtp.126.com'
#要發送的郵箱用戶名/密碼
user = 'XXX@126.com'
password = 'XXX'
#發送的郵箱
sender = 'XXX@126.com'
#接收的郵箱
receiver = 'XXX@qq.com'
#發送郵箱主題
subject = 'test_mail'

#編寫HTML類型的郵件正文
msg = MIMEText('<html><h1>大佬好!</h1></html>','html','utf-8')
msg['Subject'] = Header(subject,'utf-8')
msg['from'] = 'XXX@126.com'
msg['to'] = 'XXX@qq.com'


#連接發送郵件
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM