Python 發(fā)送郵件

最近通過python寫了一個小的用例凌盯,現(xiàn)在demo基本上完成了付枫,把用到的知識進行下梳理烹玉。
內容就由近到遠吧,因為眼前用過的是最熱乎的阐滩,也就是標題所說明的二打,發(fā)送郵件。

常用的電子郵件協(xié)議(此內容來自百度百科電子郵件協(xié)議)

常用的電子郵件協(xié)議有SMTP掂榔、POP3继效、IMAP4,它們隸屬于TCP/IP協(xié)議簇装获,默認狀態(tài)下瑞信,分別通過TCP端口25、110穴豫、143建立連接凡简。

協(xié)議類型

SMTP協(xié)議

SMTP的全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協(xié)議精肃。它是一組用于從源地址到目的地址傳輸郵件的規(guī)范秤涩,通過它來控制郵件的中轉方式。SMTP 協(xié)議屬于TCP/IP協(xié)議簇司抱,它幫助每臺計算機在發(fā)送或中轉信件時找到下一個目的地筐眷。SMTP 服務器就是遵循SMTP協(xié)議的發(fā)送郵件服務器。SMTP認證习柠,簡單地說就是要求必須在提供了賬戶名和密碼之后才可以登錄 SMTP 服務器匀谣,這就使得那些垃圾郵件的散播者無可乘之機。增加 SMTP 認證的目的是為了使用戶避免受到垃圾郵件的侵擾资溃。

POP協(xié)議

POP郵局協(xié)議負責從郵件服務器中檢索電子郵件武翎。它要求郵件服務器完成下面幾種任務之一:從郵件服務器中檢索郵件并從服務器中刪除這個郵件;從郵件服務器中檢索郵件但不刪除它肉拓;不檢索郵件后频,只是詢問是否有新郵件到達。POP協(xié)議支持多用戶互聯(lián)網(wǎng)郵件擴展,后者允許用戶在電子郵件上附帶二進制文件卑惜,如文字處理文件和電子表格文件等膏执,實際上這樣就可以傳輸任何格式的文件了,包括圖片和聲音文件等露久。在用戶閱讀郵件時更米,POP命令所有的郵件信息立即下載到用戶的計算機上,不在服務器上保留毫痕。

POP3(Post Office Protocol 3)即郵局協(xié)議的第3個版本,是因特網(wǎng)電子郵件的第一個離線協(xié)議標準征峦。

IMAP協(xié)議

互聯(lián)網(wǎng)信息訪問協(xié)議(IMAP)是一種優(yōu)于POP的新協(xié)議。和POP一樣消请,IMAP也能下載郵件栏笆、從服務器中刪除郵件或詢問是否有新郵件,但IMAP克服了POP的一些缺點臊泰。例如蛉加,它可以決定客戶機請求郵件服務器提交所收到郵件的方式,請求郵件服務器只下載所選中的郵件而不是全部郵件缸逃≌爰ⅲ客戶機可先閱讀郵件信息的標題和發(fā)送者的名字再決定是否下載這個郵件。通過用戶的客戶機電子郵件程序需频,IMAP可讓用戶在服務器上創(chuàng)建并管理郵件文件夾或郵箱丁眼、刪除郵件、查詢某封信的一部分或全部內容昭殉,完成所有這些工作時都不需要把郵件從服務器下載到用戶的個人計算機上苞七。

支持種IMAP的常用郵件客戶端有:ThunderMail,Foxmail,Microsoft Outlook等。

傳輸方式

Internet上傳送電子郵件是通過一套稱為郵件服務器的程序進行硬件管理并儲存的饲化。與個人計算機不同莽鸭,這些郵件服務器及其程序必須每天24小時不停地運行,否則就不能收發(fā)郵件了吃靠,簡單郵件傳輸協(xié)議SMTP(Simple Mail Transfer Protocol)和郵局協(xié)議POP(Post Office Protocol)是負責用客戶機/服務器模式發(fā)送和檢索電子郵件的協(xié)議硫眨。

用戶計算機上運行的電子郵件客戶機程序請求郵件服務器進行郵件傳輸,郵件服務器采用簡單郵件傳輸協(xié)議標準巢块。很多郵件傳輸工具礁阁,如outlook express、fox mail等族奢,都遵守SMTP標準并用這個協(xié)議向郵件服務器發(fā)送郵件姥闭。SMTP協(xié)議規(guī)定了郵件信息的具體格式和郵件的管理方式。

郵箱設置

為了能夠實時監(jiān)聽變化越走,我選擇了郵箱來接收變化信息棚品。這里靠欢,我們需要兩個郵箱,一個用來發(fā)送變化信息铜跑,一個用來接收變化信息门怪。這里,我使用了163郵箱進行了發(fā)送者锅纺。

開啟SMTP功能

首先登錄郵箱掷空,設置--POP3/SMTP/IMAP開啟SMTP功能。

image.png

客戶端授權密碼

為了我們的賬戶安全囤锉,建議在郵箱中坦弟,開啟一個客戶端的授權密碼,來供我們發(fā)送郵件時官地,登錄使用酿傍。操作如下圖:


image.png

Python代碼實現(xiàn)

上面的步驟完成,接下來就是代碼實現(xiàn)区丑。

# 倒入相關庫
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib

# encode方法
def format_addr(s):    
    name,addr = parseaddr(s)    
    return formataddr((Header(name,'utf-8').encode(),addr))

# 發(fā)送郵件方法
def send_email(title, subject, content):
    #發(fā)送者的郵箱地址
    from_addr = 'l**********@163.com'
    #授權密碼
    from_pwd = 's**********'
    #接受者郵箱地址
    to_addr = 'l************@qq.com'
    #smtp服務器地址
    smtp_server = 'smtp.163.com'

    #發(fā)送內容設置
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['From'] = format_addr('<%s>'%from_addr)
    msg['To'] = format_addr('Re<%s>'%to_addr)
    msg['Subject'] = Header(subject, 'utf-8').encode()

    #發(fā)送郵件 服務器和端口配置
    smtp = smtplib.SMTP_SSL(smtp_server,465)
    #測試環(huán)境下拧粪,打印出交互信息
    smtp.set_debuglevel(1)
    #登錄賬戶
    smtp.login(from_addr, from_pwd)
    #發(fā)送郵件內容
    #正文是一個str修陡,as_string()把MIMEText對象變成str
    smtp.sendmail(from_addr,to_addr,msg.as_string())
    smtp.quit()

    print 'email send success!'
    return

接收郵箱查看

在接收郵箱查看下沧侥,看您發(fā)送的內容是否成功接收到了呢?好了魄鸦,今天的內容就到這里了宴杀!

參考內容:百度百科,百度知道等拾因。

上面代碼為markdown下直接敲入的旺罢,有的可能沒有驗證,可能出現(xiàn)關鍵字書寫錯誤绢记,如果直接拷貝出現(xiàn)錯誤扁达,歡迎留言,謝謝4老ā9蚪狻!??

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末签孔,一起剝皮案震驚了整個濱河市叉讥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饥追,老刑警劉巖图仓,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異但绕,居然都是意外死亡救崔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來六孵,“玉大人碳竟,你說我怎么就攤上這事±瓿迹” “怎么了莹桅?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烛亦。 經常有香客問我诈泼,道長,這世上最難降的妖魔是什么煤禽? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任铐达,我火速辦了婚禮,結果婚禮上檬果,老公的妹妹穿的比我還像新娘瓮孙。我一直安慰自己,他們只是感情好选脊,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布杭抠。 她就那樣靜靜地躺著,像睡著了一般恳啥。 火紅的嫁衣襯著肌膚如雪偏灿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天钝的,我揣著相機與錄音翁垂,去河邊找鬼。 笑死硝桩,一個胖子當著我的面吹牛沿猜,可吹牛的內容都是我干的。 我是一名探鬼主播碗脊,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼啼肩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了望薄?” 一聲冷哼從身側響起疟游,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痕支,沒想到半個月后颁虐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡卧须,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年另绩,在試婚紗的時候發(fā)現(xiàn)自己被綠了儒陨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡笋籽,死狀恐怖蹦漠,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情车海,我是刑警寧澤笛园,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站侍芝,受9級特大地震影響研铆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜州叠,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一棵红、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咧栗,春花似錦逆甜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至可岂,卻和暖如春错敢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缕粹。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纸淮,地道東北人平斩。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像咽块,于是被迫代替她去往敵國和親绘面。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容