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

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

Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程

2019-11-25 16:39:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

poplib模塊接收郵件
python的poplib模塊是用來(lái)從pop3收取郵件的,也可以說(shuō)它是處理郵件的第一步。
POP3協(xié)議并不復(fù)雜,它也是采用的一問(wèn)一答式的方式,你向服務(wù)器發(fā)送一個(gè)命令,服務(wù)器必然會(huì)回復(fù)一個(gè)信息。pop3命令碼如下:

命令 poplib方法  參數(shù)    狀態(tài)     描述-----------------------------------------------------------------------------------------------USER  user   username  認(rèn)可  用戶名,此命令與下面的pass命令若成功,將導(dǎo)致?tīng)顟B(tài)轉(zhuǎn)換PASS  pass_   password  認(rèn)可  用戶密碼   APOP  apop   Name,Digest 認(rèn)可  Digest是MD5消息摘要-----------------------------------------------------------------------------------------------STAT  stat   None    處理  請(qǐng)求服務(wù)器發(fā)回關(guān)于郵箱的統(tǒng)計(jì)資料,如郵件總數(shù)和總字節(jié)數(shù)UIDL  uidl   [Msg#]   處理  返回郵件的唯一標(biāo)識(shí)符,POP3會(huì)話的每個(gè)標(biāo)識(shí)符都將是唯一的LIST  list   [Msg#]   處理  返回郵件數(shù)量和每個(gè)郵件的大小RETR  retr   [Msg#]   處理  返回由參數(shù)標(biāo)識(shí)的郵件的全部文本DELE  dele   [Msg#]   處理  服務(wù)器將由參數(shù)標(biāo)識(shí)的郵件標(biāo)記為刪除,由quit命令執(zhí)行RSET  rset   None    處理  服務(wù)器將重置所有標(biāo)記為刪除的郵件,用于撤消DELE命令TOP   top    [Msg#]   處理  服務(wù)器將返回由參數(shù)標(biāo)識(shí)的郵件前n行內(nèi)容,n必須是正整數(shù)NOOP  noop   None    處理  服務(wù)器返回一個(gè)肯定的響應(yīng)----------------------------------------------------------------------------------------------QUIT  quit   None    更新    

 

python的poplib也針對(duì)這些命令分別提供了對(duì)應(yīng)的方法,上面在第二列里已經(jīng)標(biāo)出來(lái)。收取郵件的過(guò)程一般是:
1. 連接pop3服務(wù)器 (poplib.POP3.__init__)
2. 發(fā)送用戶名和密碼進(jìn)行驗(yàn)證 (poplib.POP3.user poplib.POP3.pass_)
3. 獲取郵箱中信件信息 (poplib.POP3.stat)
4. 收取郵件 (poplib.POP3.retr)
5. 刪除郵件 (poplib.POP3.dele)
6. 退出 (poplib.POP3.quit)
注意的是,上面我在括號(hào)里寫(xiě)的是使用什么方法來(lái)完成這個(gè)操作,在實(shí)際的代碼中不能那樣寫(xiě),應(yīng)該是創(chuàng)建poplib.POP3的對(duì)象,然后,調(diào)用這個(gè)對(duì)象的方法。比如:

poplib.POP3.quit 

應(yīng)該理解為

a = poplib.POP3(host)a.quit()

下面看看實(shí)際的代碼:

#-*- encoding: gb2312 -*-import os, sys, stringimport poplib# pop3服務(wù)器地址host = "pop3.163.com"# 用戶名username = "xxxxxx@163.com"# 密碼password = "xxxxxxx"# 創(chuàng)建一個(gè)pop3對(duì)象,這個(gè)時(shí)候?qū)嶋H上已經(jīng)連接上服務(wù)器了pp = poplib.POP3(host)# 設(shè)置調(diào)試模式,可以看到與服務(wù)器的交互信息pp.set_debuglevel(1)# 向服務(wù)器發(fā)送用戶名pp.user(username)# 向服務(wù)器發(fā)送密碼pp.pass_(password)# 獲取服務(wù)器上信件信息,返回是一個(gè)列表,第一項(xiàng)是一共有多上封郵件,第二項(xiàng)是共有多少字節(jié)ret = pp.stat()print ret# 需要取出所有信件的頭部,信件id是從1開(kāi)始的。for i in range(1, ret[0]+1):  # 取出信件頭部。注意:top指定的行數(shù)是以信件頭為基數(shù)的,也就是說(shuō)當(dāng)取0行,  # 其實(shí)是返回頭部信息,取1行其實(shí)是返回頭部信息之外再多1行。  mlist = pp.top(i, 0)  print 'line: ', len(mlist[1])# 列出服務(wù)器上郵件信息,這個(gè)會(huì)對(duì)每一封郵件都輸出id和大小。不象stat輸出的是總的統(tǒng)計(jì)信息ret = pp.list()print ret# 取第一封郵件完整信息,在返回值里,是按行存儲(chǔ)在down[1]的列表里的。down[0]是返回的狀態(tài)信息down = pp.retr(1)print 'lines:', len(down)# 輸出郵件for line in down[1]:  print line# 退出pp.quit()

在有些地方,有安全郵件這一說(shuō),其實(shí)是對(duì)pop3做了ssl加密。這樣的,poplib一樣可以處理,只不過(guò)不是用POP3這個(gè)類,而是用POP3_SSL, 他們的方法都一樣。因此支持ssl在上面代碼中,替換創(chuàng)建pop3對(duì)象的一行為:

pp = poplib.POP3_SSL(host)

smtplib: 用python發(fā)送SSL/TLS安全郵件
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝。
smtp協(xié)議的基本命令包括:

  •     HELO 向服務(wù)器標(biāo)識(shí)用戶身份
  •     MAIL 初始化郵件傳輸 mail from:
  •     RCPT 標(biāo)識(shí)單個(gè)的郵件接收人;常在MAIL命令后面,可有多個(gè)rcpt to:
  •     DATA 在單個(gè)或多個(gè)RCPT命令后,表示所有的郵件接收人已標(biāo)識(shí),并初始化數(shù)據(jù)傳輸,以.結(jié)束
  •     VRFY 用于驗(yàn)證指定的用戶/郵箱是否存在;由于安全方面的原因,服務(wù)器常禁止此命令
  •     EXPN 驗(yàn)證給定的郵箱列表是否存在,擴(kuò)充郵箱列表,也常被禁用
  •     HELP 查詢服務(wù)器支持什么命令
  •     NOOP 無(wú)操作,服務(wù)器應(yīng)響應(yīng)OK
  •     QUIT 結(jié)束會(huì)話
  •     RSET 重置會(huì)話,當(dāng)前傳輸被取消
  •     MAIL FROM 指定發(fā)送者地址
  •     RCPT TO 指明的接收者地址

    一般smtp會(huì)話有兩種方式,一種是郵件直接投遞,就是說(shuō),比如你要發(fā)郵件

主站蜘蛛池模板: 阳朔县| 陆河县| 昆明市| 丰顺县| 库伦旗| 平原县| 友谊县| 龙泉市| 杭州市| 鄂尔多斯市| 威信县| 临夏县| 凭祥市| 喀喇沁旗| 玉门市| 濉溪县| 大丰市| 华阴市| 铁岭县| 赣州市| 株洲市| 潜江市| 平武县| 云梦县| 吉首市| 滨海县| 交口县| 乳源| 甘德县| 桐乡市| 鹿泉市| 朝阳县| 肇庆市| 自治县| 红河县| 荃湾区| 阜南县| 普兰店市| 阿尔山市| 常州市| 迁安市|