python-自動化測試結果發送郵件報錯(smtplib.SMTPDataError: (554, b'DT:SPM 163……)解決方法


先把我的郵件發送腳本粘貼上來吧,再解釋下我的報錯和解決方法:

  import smtplib,email,os,time,yagmail
  from email.mime.multipart import MIMEMultipart
  from email.mime.text import MIMEText
  from email.header import Header


  # 測試報告存儲的路徑 report_dir = '..........\\report\\' # 將測試報告文件夾下的所有文件名作為列表返回 lists = os.listdir(report_dir) # 對所有測試報告按照生成時間進行排序 lists.sort(key=lambda filename: os.path.getmtime(report_dir + filename)) # 獲取最新的測試報告 recent = lists[-1] # 指定最新的測試報告路徑 file = os.path.join(report_dir, recent) # 郵件正文 # content = "接口測試報告" # # 將測試報告作為附件發送 # yag.send(".....com","測試報告",content,file) # 發送郵箱服務器 smtpserver = 'smtp.163.com' # 發送郵箱用戶/密碼(登錄郵箱操作) user = "......@163.com" password = '..........' # 發送郵箱 sender = ".........@163.com" # 接收郵箱 receivers = ['......@qq.com', ".......@163.com"] # 發送主題 subject = '接口測試報告' # # 編寫HTML類型的郵件正文(把HTML代碼寫入) # msg = MIMEText('<html><body><a href="">百度一下</a></p></body></html>','html','utf-8') # msg['Subject'] = Header(subject,"utf-8") # 發送附件 sendfile = open(file, "r", encoding='utf-8').read() att = MIMEText(sendfile, "base64", "utf-8") att["Content-Type"] = "application/octet-stream" att["Content-Disposition"] = "attachment;filename = result.html" msgRoot = MIMEMultipart('related') msgRoot['Subject'] = subject msgRoot.attach(att) msgRoot["From"] = "L<.......@163.com>" msgRoot["To"] = '%s' % receivers # 連接發送郵件(smtplib模塊基本使用格式) smtp = smtplib.SMTP() smtp.connect(smtpserver, 25) # smtp.set_debuglevel(1) smtp.login(user, password) # smtp.sendmail(sender,receiver,msg.as_string()) smtp.sendmail(sender, receivers, msgRoot.as_string()) smtp.quit()

這個是已經可以正常執行的代碼了,中途出現535、554的錯誤 ,記錄下我解決報錯的結果方法和嘗試

1.首先報錯535:這個比較簡單就解決的了,去我的163郵箱里面打開授權,設置如下:

原因:

未將POP3/SMTP服務開啟。通過在163郵箱內 設置 獲取授權碼  打開,通過授權碼可以進行第三方登錄。

 

 

 然后開啟SMTP服務,並且記錄下授權的密碼

 

 

 記住,要記錄下這個開啟時給的授權密碼。然后賦值到腳本里面的password,這個密碼不是郵箱登錄密碼,是這個授權密碼哦。

則需要這樣就基本處理掉了535報錯

2.再次運行出現554報錯,解決方案有好幾種:

原因:

*  發件人和收件人參數沒有進行定義

* 發送的郵件內容包含了未被許可的信息,或被系統識別為垃圾郵件。請檢查是否有用戶發送病毒或者垃圾郵件; 信封發件人和信頭發件人不匹配

第一個的問題解決方案,顧名思義,進行參數定義,就像我腳本代碼里面的一樣:

msgRoot["From"] = "L<.......@163.com>" # 發件人 msgRoot["To"] = 'H<.........@qq,com>' # 收件人


第二個的問題解決方案,據說只要在收件人里面加上發件人自己就可以了,還有說主題最好超過五個字符,且不要有星號等特殊符號,更有的人說不要加測試(test)字眼,我覺得多試試,總是有一種可能阻擋住你的。

 

 

最后,希望能解決你的問題,要是有其他情況呢,留言下來我們一起去分析解決吧


免責聲明!

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



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