中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中SMTP發送郵件遇到問題怎么辦

發布時間:2021-07-26 14:47:01 來源:億速云 閱讀:311 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Python中SMTP發送郵件遇到問題怎么辦,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Python練習內容:

SMTP是發送郵件的協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。

Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件。

首先,我們來構造一個最簡單的純文本郵件:

from email.mime.text import MIMEText
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')

注意到構造MIMEText對象時,第一個參數就是郵件正文,第二個參數是MIME的subtype,傳入'plain'表示純文本,最終的MIME就是'text/plain',最后一定要用utf-8編碼保證多語言兼容性。

然后,通過SMTP發出去:

# 輸入Email地址和口令:from_addr = input('From: ')
password = input('Password: ')# 輸入收件人地址:to_addr = input('To: ')# 輸入SMTP服務器地址:smtp_server = input('SMTP server: ')import smtplib
server = smtplib.SMTP(smtp_server, 25) # SMTP協議默認端口是25server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()

我們用set_debuglevel(1)就可以打印出和SMTP服務器交互的所有信息。SMTP協議就是簡單的文本命令和響應。login()方法用來登錄SMTP服務器,sendmail()方法就是發郵件,由于可以一次發給多個人,所以傳入一個list,郵件正文是一個str,as_string()把MIMEText對象變成str。

如果一切順利,就可以在收件人信箱中收到我們剛發送的Email

————————分割線,以上都是資料內容————————

使用過程中我遇到了一些問題,或者是之前作者沒有表述清楚

我使用的是163郵箱

1、首先作者沒有提醒我,要確保自己的郵箱地址開啟了smtp服務,并設置客戶端授權登陸密碼

Python中SMTP發送郵件遇到問題怎么辦

2、發送郵件時,password應該填寫郵箱的授權登陸碼,而不是自己的郵箱密碼。

3、按照以上代碼運行,會報錯

Traceback (most recent call last):
 File "mailDemo.py", line 24, in
 server.sendmail(from_addr,[to_addr],msg.as_string())
 File "C:\Program Files\Python35-32\lib\smtplib.py", line 878, in sendmail
 raise SMTPDataError(code, resp)

應該在代碼中加上:

#發送郵箱地址
msg['From'] = from_addr
#收件箱地址
msg['To'] = to_addr
#主題
msg['Subject'] = 'the frist mail'

4、在公司環境運行沒問題的代碼,在自己家的網絡下又遇到了一系列問題,運行時報。

Traceback (most recent call last):
File "/Users/xuexiaopeng/Documents/sendmailDemo.py", line 13, in <module>
 server = smtplib.SMTP(smtp_server,25)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/smtplib.py", line 253, in __init__
 raise SMTPConnectError(code, msg)
smtplib.SMTPConnectError: (554, b'IP<114.111.167.154> in blacklist')

我也不知道這個114.111.167.154是那里的IP,我將自己電腦的翻墻代理關閉,重啟了路由器解決了。

5、發送郵件時報錯:

Traceback (most recent call last):
File "/Users/xuexiaopeng/Documents/sendmailDemo.py", line 21, in <module>
 server.sendmail(from_addr, [to_addr], msg.as_string())
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/smtplib.py", line 878, in sendmail
 raise SMTPDataError(code, resp)
smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp10,DsCowAA3h9_QbgZXI9_fCQ--.713S2 1460039376,please see http://mail.163.com/help/help_spam_16.htm?ip=117.114.147.187&hostid=smtp10&time=1460039376')

我查了一下頁面http://mail.163.com/help/help_spam_16.htm?ip=117.114.147.187&hostid=smtp10&time=1460039376,是發生了退信行為,后來我關閉了路由器,連接了自己手機分享的熱點,才發送成功。

至于家里的網絡為啥會出問題,我還的再研究。

完整代碼如下:

from email.mime.text import MIMEText
msg = MIMEText('hello,send by python...','plain','utf-8')
#發送郵箱地址
from_addr = 'test@163.com'
#郵箱授權碼,非登陸密碼
password = '123'
#收件箱地址
to_addr = '123456@qq.com'
#smtp服務器
smtp_server = 'smtp.163.com'
#發送郵箱地址
msg['From'] = from_addr
#收件箱地址
msg['To'] = to_addr
#主題
msg['Subject'] = 'the frist mail'
import smtplib
server = smtplib.SMTP(smtp_server,25)
server.set_debuglevel(1)
print(from_addr)
print(password)
server.login(from_addr,password)
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()

關于“Python中SMTP發送郵件遇到問題怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

八宿县| 广东省| 银川市| 昭觉县| 铅山县| 永善县| 滦平县| 宝清县| 阿拉善盟| 高邮市| 永顺县| 会宁县| 西城区| 斗六市| 嘉黎县| 通城县| 开鲁县| 永靖县| 诸城市| 建平县| 临泽县| 六枝特区| 台安县| 缙云县| 故城县| 西峡县| 安宁市| 合川市| 府谷县| 河南省| 大连市| 庄浪县| 长葛市| 河西区| 乐业县| 如东县| 长海县| 永仁县| 阳高县| 洛阳市| 榆中县|