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

首頁 > 編程 > Python > 正文

python模塊smtplib實現(xiàn)純文本郵件發(fā)送功能

2020-01-04 15:00:47
字體:
供稿:網(wǎng)友

今天學(xué)到了如何使用Python的smtplib庫發(fā)送郵件,中間也是遇到了各種各樣的錯誤和困難,還好都一一的解決了。下面來談一談我的這段經(jīng)歷。

配置你的郵箱

為什么要配置郵箱呢?具體要配置什么呢?

因為我們申請的一些免費郵箱都是默認不開啟smtp/pop協(xié)議的。 
SMTP是發(fā)郵件使用到的計算機網(wǎng)絡(luò)中應(yīng)用層協(xié)議中的一個;而POP則是收郵件時使用到的計算機網(wǎng)絡(luò)中的應(yīng)用層協(xié)議的其中一個。這都是理論性的知識了,上過計算機網(wǎng)絡(luò)這門課的想必都知道,就不多說了。

配置就是要開啟這項服務(wù)。否則我們就不能實現(xiàn)用Python代碼來控制發(fā)送和接收郵件了。

我們在配置完成之后,系統(tǒng)會提示給我們一個郵箱客戶端的授權(quán)碼。作用就是我們登陸的時候替代原來的登陸密碼。大家一定要完善保存咯。我這里采用的是163的郵箱,所以是可以自己設(shè)置這個授權(quán)碼的。

使用代碼發(fā)郵件

還是按照,先看代碼再研究的策略。如下:

# coding:utf-8import smtplibfrom email.mime.text import MIMETextfrom email.header import Header"""請確保自己的郵箱的smtp協(xié)議開啟,都則會出現(xiàn)認證的錯誤的,如ssh等"""sender = "1564086XXXX@163.com"# 收件人,可以是多個receivers = ['102170XXXX@qq.com']# 三個參數(shù):第一個為純文本,第二個plain設(shè)置文本格式,第三個為編碼格式message = MIMEText('這里是發(fā)送的郵件的主要的內(nèi)容。Pure Text Here!','plain','utf-8')message['From'] = Header('來自Mark','utf-8')message['To'] = Header('測試標題','utf-8')subject = '哈哈哈哈哈哈,這是郵件的主題 'message['Subject'] = Header(subject,'utf-8')try: smtpObj = smtplib.SMTP() smtpObj.connect('smtp.163.com',25) smtpObj.login(sender,'你的客戶端授權(quán)碼') smtpObj.sendmail(sender,receivers,message.as_string()) smtpObj.quit() print '郵件已成功發(fā)送了'except smtplib.SMTPException,e: print e.message

測試的結(jié)果:

D:/Software/Python2/python.exe E:/Code/Python/MyTestSet/mail/PureText.py
郵件已成功發(fā)送了

Process finished with exit code 0

python,smtplib,郵件發(fā)送

確實是成功發(fā)送了的。

代碼探查

下面就來深入的研究一下發(fā)送郵件實現(xiàn)的流程吧。我們注意到了,最最主要的是下面的這樣一段代碼。

smtpObj = smtplib.SMTP()smtpObj.connect('smtp.163.com',25)smtpObj.login(sender,'你的客戶端授權(quán)碼')smtpObj.sendmail(sender,receivers,/message.as_string()smtpObj.quit()

不難看出,主要是經(jīng)歷了下面的這些流程:

  • 獲得SMTP服務(wù)
  • 連接服務(wù)器
  • 模擬客戶端登陸
  • 實現(xiàn)發(fā)送郵件
  • 退出登錄

其中核心的也就是客戶端登陸和發(fā)送郵件的兩個步驟。模擬登陸的時候需要注意的就是使用你自己的授權(quán)碼就行了,沒什么難度。而發(fā)送郵件的時候需要注意一下參數(shù)。發(fā)件人是一個,而收件人是一個列表,里面可以有很多個收件人(這樣可以借助這個列表實現(xiàn)郵件的群發(fā))。

其他需要注意的也就是使用MIME類型的數(shù)據(jù),和使用utf-8編碼就行了。屬于非智力相關(guān)的內(nèi)容。所以不用太在意。會用就可以了。

這樣看來,發(fā)個郵件什么的也不是很難嘛。(^__^) 嘻嘻……

錯誤總結(jié)

錯誤一:500、530等5開頭的錯誤,大致為什么ssh異常啊什么的。有點web常識的都知道,5開頭的錯誤代碼一般都是服務(wù)器內(nèi)部的錯誤,所以這基本上可以判斷出我們的代碼其實沒有出錯。我們主要的排錯方向應(yīng)該是服務(wù)器端了(當然了,凡是沒有任何的絕對,但這種情況出現(xiàn)的概率確實是很小的)。這時,我們要檢查一下自己的郵箱的SMTP/POP服務(wù)開啟了沒有啊等等

錯誤二:授權(quán)碼沒有寫或者填寫成了自己的郵箱之前的密碼,錯誤提示一般都是認證相關(guān)的。這一點屬于低級錯誤了。因為在配置完自己的SMTP/POP服務(wù)之后,系統(tǒng)會發(fā)還一個短信提示,告知用戶要使用授權(quán)碼替代原密碼登陸郵箱。所以使用你的授權(quán)碼進行登錄唄。

錯誤三:代碼中的錯誤。這就更加的不應(yīng)該了,少寫了必填項,或者編碼沒添加等類似的錯誤是我們應(yīng)該極力避免的,所以盡量保證自己的代碼的正確。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 松潘县| 临邑县| 瑞安市| 乌兰县| 四平市| 岗巴县| 平山县| 凉城县| 德庆县| 松原市| 城固县| 饶阳县| 建始县| 禄丰县| 潼关县| 米易县| 临桂县| 永春县| 文水县| 耒阳市| 兴隆县| 黄龙县| 许昌县| 茂名市| 施秉县| 临桂县| 建阳市| 乐清市| 阳江市| 馆陶县| 巴彦县| 永川市| 武隆县| 合江县| 梅州市| 泰顺县| 铜川市| 鄄城县| 尚义县| 黎平县| 宝兴县|