1. 程式人生 > >【selenium+Python unittest】之發送郵箱時報錯:smtplib.SMTPDataError、smtplib.SMTPAuthenticationError(例:126郵箱)

【selenium+Python unittest】之發送郵箱時報錯:smtplib.SMTPDataError、smtplib.SMTPAuthenticationError(例:126郵箱)

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郵箱)