日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python邮件收发

發(fā)布時(shí)間:2023/12/10 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python邮件收发 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python郵件收發(fā)

文章目錄

  • python郵件收發(fā)
    • 協(xié)議簡介
      • pop3
      • IMAP
      • SMTP
    • 功能構(gòu)想
      • 郵件的收取
        • 代碼示例
      • 郵件的發(fā)送
        • 代碼示例
    • 總結(jié)

協(xié)議簡介

簡單介紹一下,具體信息可參考圖解TCTCP/IP這本書,不需要深入了解實(shí)現(xiàn)

pop3

POP3是Post Office Protocol 3的簡稱,即郵局協(xié)議的第3個(gè)版本,它規(guī)定怎樣將個(gè)人計(jì)算機(jī)連接到Internet的郵件服務(wù)器和下載電子郵件的電子協(xié)議。它是因特網(wǎng)電子郵件的第一個(gè)離線協(xié)議標(biāo)準(zhǔn),POP3允許用戶從服務(wù)器上把郵件存儲(chǔ)到本地主機(jī)(即自己的計(jì)算機(jī))上,同時(shí)刪除保存在郵件服務(wù)器上的郵件,而POP3服務(wù)器則是遵循POP3協(xié)議的接收郵件服務(wù)器,用來接收電子郵件的。

IMAP

IMAP全稱是Internet Mail Access Protocol,即交互式郵件存取協(xié)議,它是跟POP3類似郵件訪問標(biāo)準(zhǔn)協(xié)議之一。不同的是,開啟了IMAP后,您在電子郵件客戶端收取的郵件仍然保留在服務(wù)器上,同時(shí)在客戶端上的操作都會(huì)反饋到服務(wù)器上,如:刪除郵件,標(biāo)記已讀等,服務(wù)器上的郵件也會(huì)做相應(yīng)的動(dòng)作。所以無論從瀏覽器登錄郵箱或者客戶端軟件登錄郵箱,看到的郵件以及狀態(tài)都是一致的。

SMTP

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡單的封裝。

功能構(gòu)想

我們?cè)谶@里實(shí)現(xiàn)簡單的收發(fā),更多功能可自由實(shí)現(xiàn)

郵件的收取

使用poplib庫,email庫來實(shí)現(xiàn)我們的收取

代碼示例

#-*- encoding: gb2312 -*- import os, sys, string import 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開始的。 for i in range(1, ret[0]+1):# 取出信件頭部。注意:top指定的行數(shù)是以信件頭為基數(shù)的,也就是說當(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() 在有些地方,有安全郵件這一說,其實(shí)是對(duì)pop3做了ssl加密。這樣的,poplib一樣可以處理,只不過不是用POP3這個(gè)類,而是用POP3_SSL, 他們的方法都一樣。因此支持ssl在上面代碼中,替換創(chuàng)建pop3對(duì)象的一行為:pp = poplib.POP3_SSL(host)

郵件的發(fā)送

使用smtp實(shí)現(xiàn)發(fā)送郵件

代碼示例

#!/usr/bin/python # -*- coding: UTF-8 -*-import smtplib from email.mime.text import MIMEText from email.header import Headersender = 'from@runoob.com' receivers = ['429240967@qq.com'] # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱# 三個(gè)參數(shù):第一個(gè)為文本內(nèi)容,第二個(gè) plain 設(shè)置文本格式,第三個(gè) utf-8 設(shè)置編碼 message = MIMEText('Python 郵件發(fā)送測(cè)試...', 'plain', 'utf-8') message['From'] = Header("菜鳥教程", 'utf-8') # 發(fā)送者 message['To'] = Header("測(cè)試", 'utf-8') # 接收者subject = 'Python SMTP 郵件測(cè)試' message['Subject'] = Header(subject, 'utf-8')try:smtpObj = smtplib.SMTP('localhost')smtpObj.sendmail(sender, receivers, message.as_string())print "郵件發(fā)送成功" except smtplib.SMTPException:print "Error: 無法發(fā)送郵件"

附上菜鳥教程的文章

總結(jié)

添加這種收發(fā)模塊到自己的服務(wù)器上運(yùn)行的服務(wù)上,可以增加交互性,實(shí)現(xiàn)諸如自動(dòng)回復(fù),錯(cuò)誤報(bào)警等功能,對(duì)我還是比較實(shí)用的,關(guān)于自動(dòng)回復(fù)

個(gè)人水平不足,相關(guān)信息都是學(xué)習(xí)自他人博客,錯(cuò)誤在所難免,歡迎指出
郵箱:minkeskl@qq.com

總結(jié)

以上是生活随笔為你收集整理的python邮件收发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。