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

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

簡(jiǎn)單實(shí)現(xiàn)python收發(fā)郵件功能

2020-02-16 11:30:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

今天記錄一下如何使用python收發(fā)郵件,知識(shí)要點(diǎn)在python內(nèi)置的poplib和stmplib模塊的使用上。

1. 準(zhǔn)備工作

首先,我們需要有一個(gè)測(cè)試郵箱,我們使用新浪郵箱,而且要進(jìn)行如下設(shè)置:

在新浪郵箱首頁(yè)的右上角找到設(shè)置->更多設(shè)置,然后在左邊選擇“客戶(hù)端/pop/imap/smtp”:

最后,將Pop3/smtp服務(wù)的服務(wù)狀態(tài)打開(kāi)即可:

2. poplib接收郵件

首先,介紹一下poplib登錄郵箱和下載郵件的一些接口:

self.popHost = 'pop.sina.com' self.smtpHost = 'smtp.sina.com' self.port = 25 self.userName = 'xxxxxx@sina.com' self.passWord = 'xxxxxx' self.bossMail = 'xxxxxx@qq.com' 

我們需要如上一些常量,用于指定登錄郵箱以及pop,smtp服務(wù)器及端口。我們調(diào)用poplib的POP3_SSL接口可以登錄到郵箱。

# 登錄郵箱 def login(self):  try:   self.mailLink = poplib.POP3_SSL(self.popHost)   self.mailLink.set_debuglevel(0)   self.mailLink.user(self.userName)   self.mailLink.pass_(self.passWord)   self.mailLink.list()   print u'login success!'  except Exception as e:   print u'login fail! ' + str(e)   quit() 

在登錄郵箱的時(shí)候,很自然,我們需要提供用戶(hù)名和密碼,如上述代碼所示,使用非常簡(jiǎn)單。
登錄郵箱成功后,我們可以使用list方法獲取郵箱的郵件信息。我們看到list方法的定義:

def list(self, which=None):  """Request listing, return result.   Result without a message number argument is in form  ['response', ['mesg_num octets', ...], octets].   Result when a message number argument is given is a  single response: the "scan listing" for that message.  """  if which is not None:   return self._shortcmd('LIST %s' % which)  return self._longcmd('LIST') 

我們看到list方法的注釋?zhuān)渲形囊馑际牵琹ist方法有一個(gè)默認(rèn)參數(shù)which,其默認(rèn)值為None,當(dāng)調(diào)用者沒(méi)有給出參數(shù)時(shí),該方法會(huì)列出所有郵件的信息,其返回形式為 [response, ['msg_number, octets', ...], octets],其中,response為響應(yīng)結(jié)果,msg_number是郵件編號(hào),octets為8位字節(jié)單位。我們看一看具體例子:
('+OK ', ['1 2424', '2 2422'], 16)
這是一個(gè)調(diào)用list()方法以后的返回結(jié)果。很明顯,這是一個(gè)tuple,第一個(gè)值sahib響應(yīng)結(jié)果'+OK',表示請(qǐng)求成功,第二個(gè)值為一個(gè)數(shù)組,存儲(chǔ)了郵件的信息。例如'1 2424'中的1表示該郵件編號(hào)為1。
下面我們?cè)倏慈绾问褂胮oplib下載郵件。

# 獲取郵件 def retrMail(self):  try:   mail_list = self.mailLink.list()[1]   if len(mail_list) == 0:    return None   mail_info = mail_list[0].split(' ')   number = mail_info[0]   mail = self.mailLink.retr(number)[1]   self.mailLink.dele(number)    subject = u''   sender = u''   for i in range(0, len(mail)):    if mail[i].startswith('Subject'):     subject = mail[i][9:]    if mail[i].startswith('X-Sender'):     sender = mail[i][10:]   content = {'subject': subject, 'sender': sender}   return content  except Exception as e:   print str(e)   return None             
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌兰县| 宁蒗| 资溪县| 秦皇岛市| 苗栗市| 噶尔县| 太白县| 房产| 聊城市| 红桥区| 岚皋县| 土默特右旗| 汽车| 二手房| 山丹县| 尼玛县| 涟水县| 南皮县| 民丰县| 昆明市| 上犹县| 沙洋县| 佛教| 合江县| 肇源县| 溧水县| 西丰县| 芷江| 白水县| 东安县| 石嘴山市| 六安市| 工布江达县| 天门市| 闻喜县| 建阳市| 田林县| 沙洋县| 政和县| 泗水县| 河曲县|