Python3 傳送郵件踩坑記錄

2021-08-17 12:29:32 字數 2016 閱讀 2491

新手學習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...