新手學習python3.5,根據教程試一試使用python3.5中的smtplib模組傳送電子郵件。出現多個問題:
1、error:無法傳送郵件.case:(550, b'user has no permission') 和 error:無法傳送郵件.case:(535, b'error: authentication failed')
教程**:
import smtplib
from email.mime.text import mimetext
from email.header import header
sender = '***[email protected]'
pwd = '******'
receivers = ['***[email protected]']
# 三個引數:第乙個為文字內容,第二個為plain設定文字格式,第三個為utf-8設定編碼
message = mimetext("python 傳送郵件測試...","plain",'utf-8')
message ['from'] = header("郵件測試",'utf-8')
message ['to'] = header("測試",'utf-8')
subject = "python郵件測試"
message["subject"] = header(subject,"utf-8")
try:
# 使用非本地伺服器,需要建立ssl連線
smtpobj = smtplib.smtp_ssl("smtp.163.com",465)
smtpobj.login(sender,pwd)
smtpobj.sendmail(sender,receivers,message.as_string())
print("郵件傳送成功")
except smtplib.smtpexception as e:
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 ')
解決辦法:這個錯誤我解決了很久,有網友說是因為郵件主題有「測試」二字被遮蔽了之類的,正確的應該是將
紅色方框**換成:
其中:a和b可以在郵箱中找到,你可以先手動用163郵箱發一封郵件給qq郵箱檢視:
將郵件中的a和b替換到**中即可。
注意:a、b和"
祝:學習順利~
關於python3 傳送郵件
from email.mime.text import mimetext from email.header import header from smtplib import smtp ssl qq伺服器 host server smtp.qq.com sender qq為發件人的qq號碼 sen...
利用Python3傳送郵件 親測可行
1 修改pip源為國內源頭mkdir pip vim pip pip.conf 寫入下面的內容 global index url install trusted host mirrors.aliyun.com2 安裝發郵件的包pip3 install pyemail3 郵箱配置開啟smtp 進入郵箱...
python3 傳送任意檔案郵件的例項
例項如下所示 usr bin python coding utf 8 import smtplib import email.mime.multipart import email.mime.text from email.mime.text import mimetext from email.m...