国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python SMTP發(fā)送郵件遇到的一些問(wèn)題及解決辦法

2020-01-04 14:15:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Python練習(xí)內(nèi)容:

SMTP是發(fā)送郵件的協(xié)議,Python內(nèi)置對(duì)SMTP的支持,可以發(fā)送純文本郵件、HTML郵件以及帶附件的郵件。

Python對(duì)SMTP支持有smtplib和email兩個(gè)模塊,email負(fù)責(zé)構(gòu)造郵件,smtplib負(fù)責(zé)發(fā)送郵件。

首先,我們來(lái)構(gòu)造一個(gè)最簡(jiǎn)單的純文本郵件:

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

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

然后,通過(guò)SMTP發(fā)出去:

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

我們用set_debuglevel(1)就可以打印出和SMTP服務(wù)器交互的所有信息。SMTP協(xié)議就是簡(jiǎn)單的文本命令和響應(yīng)。login()方法用來(lái)登錄SMTP服務(wù)器,sendmail()方法就是發(fā)郵件,由于可以一次發(fā)給多個(gè)人,所以傳入一個(gè)list,郵件正文是一個(gè)str,as_string()把MIMEText對(duì)象變成str。

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

?————————分割線,以上都是資料內(nèi)容?————————

使用過(guò)程中我遇到了一些問(wèn)題,或者是之前作者沒(méi)有表述清楚 

我使用的是163郵箱

1、首先作者沒(méi)有提醒我,要確保自己的郵箱地址開啟了smtp服務(wù),并設(shè)置客戶端授權(quán)登陸密碼

Python,SMTP,發(fā)送郵件

2、發(fā)送郵件時(shí),password應(yīng)該填寫郵箱的授權(quán)登陸碼,而不是自己的郵箱密碼。

3、按照以上代碼運(yùn)行,會(huì)報(bào)?錯(cuò)

?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)

應(yīng)該在代碼中加上:

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

4、在公司環(huán)境運(yùn)行沒(méi)問(wèn)題的代碼,在自己家的網(wǎng)絡(luò)下又遇到了一系列問(wèn)題,運(yùn)行時(shí)報(bào)。

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')

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

5、發(fā)送郵件時(shí)報(bào)錯(cuò):

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')

我查了一下頁(yè)面http://mail.163.com/help/help_spam_16.htm?ip=117.114.147.187&hostid=smtp10&time=1460039376,是發(fā)生了退信行為,后來(lái)我關(guān)閉了路由器,連接了自己手機(jī)分享的熱點(diǎn),才發(fā)送成功。

至于家里的網(wǎng)絡(luò)為啥會(huì)出問(wèn)題,我還的再研究。

完整代碼如下:

from email.mime.text import MIMETextmsg = MIMEText('hello,send by python...','plain','utf-8')#發(fā)送郵箱地址from_addr = 'test@163.com'#郵箱授權(quán)碼,非登陸密碼password = '123'#收件箱地址to_addr = '123456@qq.com'#smtp服務(wù)器smtp_server = 'smtp.163.com'#發(fā)送郵箱地址msg['From'] = from_addr#收件箱地址msg['To'] = to_addr#主題msg['Subject'] = 'the frist mail'import smtplibserver = 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()

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洪雅县| 嘉善县| 上虞市| 黔江区| 盐边县| 山丹县| 仪征市| 连江县| 嘉义市| 铅山县| 黔西| 澜沧| 莎车县| 阜新| 深水埗区| 禹州市| 景泰县| 抚顺县| 乌审旗| 潞城市| 洪洞县| 政和县| 吐鲁番市| 灵山县| 金昌市| 铜山县| 漠河县| 榆中县| 临猗县| 柳江县| 邯郸市| 古田县| 云梦县| 泸水县| 拜城县| 元阳县| 镇雄县| 云南省| 三亚市| 涿州市| 金乡县|