1. 程式人生 > >python3傳送郵件出現的問題(轉)

python3傳送郵件出現的問題(轉)

新手學習Python3.5,根據教程試一試使用Python3.5中的smtplib模組傳送電子郵件。出現多個問題:

    本文中使用的傳送郵箱:[email protected]    接受郵箱:[email protected]

1、Error:無法傳送郵件.Case:(550, b'User has no permission') 和 Error:無法傳送郵件.Case:(535, b'Error: authentication failed')

教程程式碼:

  1. import smtplib

  2. from email.mime.text import MIMEText

  3. from email.header import Header

  4. sender = '[email protected]'

  5. pwd = '******'

  6. receivers = ['[email protected]']

  7. # 三個引數:第一個為文字內容,第二個為plain設定文字格式,第三個為utf-8設定編碼

  8. message = MIMEText("Python 傳送郵件測試...","plain",'utf-8')

  9. message ['From'] = Header("郵件測試",'utf-8')

  10. message ['To'] = Header("測試",'utf-8')

  11. subject = "Python郵件測試"

  12. message["Subject"] = Header(subject,"utf-8")

  13. try:

  14. # 使用非本地伺服器,需要建立ssl連線

  15. smtpObj = smtplib.SMTP_SSL("smtp.163.com",465)

  16. smtpObj.login(sender,pwd)

  17. smtpObj.sendmail(sender,receivers,message.as_string())

  18. print("郵件傳送成功")

  19. except smtplib.SMTPException as e:

  20. print("Error:無法傳送郵件.Case:%s"%e)

執行結果:Error:無法傳送郵件.Case:(550, b'User has no permission')

錯誤原因:我們使用python傳送郵件時相當於自定義客戶端根據使用者名稱和密碼登入,然後使用SMTP服務傳送郵件,新註冊的163郵箱是預設不開啟客戶端授權的,因此登入總是被拒絕。

解決辦法:進入163郵箱-設定-客戶端授權密碼-開啟(授權碼是用於登入第三方郵件客戶端的專用密碼),與登入密碼不同。開啟後在程式中將

pwd = '******'

更改授權密碼。如果不及時更改,將會出現出錯 Error:無法傳送郵件.Case:(535, b'Error: authentication failed')  及時更改授權密碼即可。

2、Error:無法傳送郵件.Case:(554, b'DT:SPM 163 smtp11,D8CowABnhR7VKLZan2wPLg--.27792S2 1521887445,please see http://mail.163.com/help/help_spam_16.htm?ip=220.180.56.61&hostid=smtp11&time=1521887445')

解決辦法:這個錯誤我解決了很久,有網友說是因為郵件主題有“測試”二字被遮蔽了之類的,正確的應該是將

紅色方框程式碼換成:

其中:A和B可以在郵箱中找到,你可以先手動用163郵箱發一封郵件給QQ郵箱檢視:

將郵件中的A和B替換到程式碼中即可。

注意:A、B和"<"之間有一個空格!!!

祝:學習順利~