Python怎么發(fā)送郵件?不清楚的我教你坡慌!

一黔酥、前言

相信郵箱對許多人來說只是一個全是推銷郵件的垃圾桶,或者接收驗證碼的一個工具洪橘。但是郵箱其實還有很多作用跪者,其中最重要的作用就是消息交流。

現(xiàn)在我們傳遞消息的方式有很多種熄求,像是比較流行QQ渣玲、微信,或者微博弟晚、知乎這種社交軟件忘衍。甚至我們還可以劍走偏鋒的方式,比如支付寶卿城、淘寶這種軟件進行交流枚钓。

但是這些軟件通常都需要我們登錄,而且要在相應的客戶端才能進行操作瑟押。而郵件則不一樣搀捷,很多語言都提供了郵件相關(guān)操作的API,我們只需要有一個郵箱多望,就可以很隨意的發(fā)送郵件嫩舟。而且郵件的監(jiān)管相比其它軟件要松得多。

那說了這么多怀偷,我們能用郵件做些什么呢家厌?

在我的實際工作學習中,我喜歡把郵件當作一個提醒工具枢纠。有時候一些程序的執(zhí)行需要很長時間像街,這個時候就可以在程序運行成功后給我們的手機發(fā)郵件黎棠。這樣我們就能很及時地進行下一步的工作。

二镰绎、準備工作

在發(fā)送郵件之前脓斩,我們需要先獲取一個郵箱的授權(quán)碼。這個授權(quán)碼相當于你的郵箱密碼畴栖,通乘婢玻可以在網(wǎng)頁版郵箱的設置中獲取。這里以163郵箱為例吗讶,首先登錄郵箱:mail.163.com/燎猛。登錄后可以看到如下頁面:

image

我們點擊設置,然后選擇POP3/SMTP/IMAP選項照皆,然后會看到如下頁面:

image

點擊開啟重绷,然后按照要求發(fā)送短信即可獲取授權(quán)碼。這個授權(quán)碼只會顯示一次膜毁,因此需要保存好昭卓。獲取授權(quán)碼后,我們就可以開始發(fā)送郵件了

三瘟滨、發(fā)送郵件

在python中自帶了smtplib模塊用于發(fā)送郵件候醒,但是使用起來比較復雜。我們今天直接使用封裝好的yagmail模塊進行郵件的發(fā)送杂瘸。我們先來安裝yagmail:


pip install yagmail

接下來的使用就非常簡單了倒淫,基本步驟大致如下:

  1. 準備用于發(fā)送郵件的郵箱

  2. 創(chuàng)建SMTP對象

  3. 準備要發(fā)送的內(nèi)容

  4. 發(fā)送郵件

  5. 關(guān)閉連接

具體代碼如下:


import yagmail
# 1、準備用于發(fā)送郵件的郵箱
username = "sockwz@163.com"
password = "你的授權(quán)碼"
# 2败玉、創(chuàng)建SMTP對象
yag = yagmail.SMTP(user=username, password=password, host="smtp.163.com")
# 3敌土、準備要發(fā)送的內(nèi)容
content = [
    "這是一封郵件"
]
# 4、發(fā)送郵件
yag.send(to="2930777518@qq.com", subject="測試郵件", contents=content)
# 5绒怨、關(guān)閉連接
yag.close()

這里又幾點需要注意:

(1)STMP

其中SMTP其實是一種郵箱協(xié)議纯赎,我們使用yagmail.SMTP創(chuàng)建SMTP對象,它給我們封裝了底層的細節(jié)南蹂。我們只需要把用于發(fā)送郵件的郵箱和授權(quán)碼給它犬金,已經(jīng)郵箱服務器ip給它就好了。

這里又出現(xiàn)了一個郵箱服務器的概念六剥,通常發(fā)送郵件的流程是:客戶端A -> 郵箱服務器 -> 客戶端B晚顷。

其中郵箱服務器充當了郵遞員的身份,我們需要告訴程序要哪個郵遞員發(fā)郵件疗疟。因為我們使用的是SMTP協(xié)議该默,而且是163的郵箱,因此我們需要填163郵箱服務器的ip策彤。通常情況下郵箱服務器ip格式為:協(xié)議名.郵箱公司名.com栓袖。當然這個不是固定的匣摘,具體的可以在網(wǎng)頁版的設置中查看,比如網(wǎng)易郵箱的ip如下:

image

(2)郵箱內(nèi)容

郵箱內(nèi)容需要是一個列表裹刮。

(3)發(fā)送郵件

我們發(fā)送郵件的代碼如下:


yag.send(to="2930777518@qq.com", subject="測試郵件", contents=content)

這里我們使用了三個參數(shù)音榜,其中to是接收方的郵箱。subject是郵件的主體捧弃,contents是郵箱內(nèi)容赠叼。yag.send函數(shù)還有很多其它參數(shù),這里就不再細說了违霞。

四蚌讼、發(fā)送附件

附件的發(fā)送非常簡單丹诀,我們只需要在contents參數(shù)中寫入附件的參數(shù)即可渐溶,比如下面這樣:

import yagmail
username = "sockwz@163.com"
password = "你的授權(quán)碼"
yag = yagmail.SMTP(user=username, password=password, host="smtp.163.com")
content = [
    # 附件的路徑
    "xyql.jpg"
]
yag.send(to="2930777518@qq.com", subject="測試郵件", contents=content)
yag.close()

因為在我的程序下有一個叫xyql.jpg的圖片努咐,所以我直接寫就好了武通。當然有時候我們還需要讓圖片直接顯示在郵件中主守,這種情況我們只需要調(diào)用一下yagmail.inline函數(shù)即可啊掏,代碼如下:


import yagmail
username = "sockwz@163.com"
password = "你的授權(quán)碼"
yag = yagmail.SMTP(user=username, password=password, host="smtp.163.com")
content = [
    '娜娜醬',
    yagmail.inline("xyql.jpg")
]
yag.send(to="2930777518@qq.com", subject="測試郵件", contents=content)
yag.close()

這里需要注意一下鳖粟,在測試過程中發(fā)現(xiàn)不能直接單獨發(fā)內(nèi)斂圖片刃榨,而需要配一些文字發(fā)送弹砚,不然會被郵箱服務器退信。

下面我們分別看看附件和內(nèi)斂圖片的區(qū)別:

image

區(qū)別還是很明顯的枢希。

五桌吃、發(fā)送html郵件

yagmail本身就是將文字作為html發(fā)送的,因此只要我們發(fā)送html郵件不需要做什么改變苞轿。但是為了方便茅诱,我們還是把html寫一個單獨的文件,比如文件index.html:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我是一個測試頁面</title>
</head>
<body>
    <h1>這是一個測試標題</h1>
    <p style="color: red">這是一個測試內(nèi)容</p>
</body>
</html>

顯示效果如下:


image.png

效果很簡單搬卒,然后我們把上面的代碼搬過來瑟俭,稍作修改:


username = "sockwz@163.com"
password = "你的授權(quán)碼"
yag = yagmail.SMTP(user=username, password=password, host="smtp.163.com")
content = [
    # 直接從html文件中讀取內(nèi)容
    open('index.html', 'r', encoding='utf-8').read()
]
yag.send(to="2930777518@qq.com", subject="測試郵件", contents=content)
yag.close()

上面我們直接用open讀取html的內(nèi)容,然后發(fā)送契邀。下面是接收到的效果圖:

image.png

可以看到郵件正常接收摆寄。上面這些操作就可以滿足我們工作的大多數(shù)需求了,大家可以自己定制一個提醒程序坯门。

作者:ZackSock
鏈接:https://juejin.cn/post/6943473489940578318

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末微饥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子古戴,更是在濱河造成了極大的恐慌欠橘,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件现恼,死亡現(xiàn)場離奇詭異肃续,居然都是意外死亡黍檩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門始锚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來建炫,“玉大人,你說我怎么就攤上這事疼蛾「氐” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵察郁,是天一觀的道長衍慎。 經(jīng)常有香客問我,道長皮钠,這世上最難降的妖魔是什么稳捆? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮麦轰,結(jié)果婚禮上乔夯,老公的妹妹穿的比我還像新娘。我一直安慰自己款侵,他們只是感情好末荐,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著新锈,像睡著了一般甲脏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妹笆,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天块请,我揣著相機與錄音,去河邊找鬼拳缠。 笑死墩新,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的窟坐。 我是一名探鬼主播海渊,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狸涌!你這毒婦竟也來了切省?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤帕胆,失蹤者是張志新(化名)和其女友劉穎朝捆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懒豹,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡芙盘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年驯用,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儒老。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蝴乔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驮樊,到底是詐尸還是另有隱情薇正,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布囚衔,位于F島的核電站挖腰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏练湿。R本人自食惡果不足惜猴仑,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肥哎。 院中可真熱鬧辽俗,春花似錦、人聲如沸篡诽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霞捡。三九已至坐漏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碧信,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工街夭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砰碴,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓板丽,卻偏偏與公主長得像呈枉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子埃碱,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容