Flask框架——Flask-Mail郵件

上篇文章我們學(xué)習(xí)了Flask框架——Flask-WTF表單:文件上傳零渐、驗(yàn)證碼,這篇文章我們學(xué)習(xí)Flask框架——Flask-Mail郵件。

Web應(yīng)用程序經(jīng)常需要向用戶(hù)展鸡、客戶(hù)端、管理員闷祥、運(yùn)維人員等相關(guān)人員發(fā)送郵件娱颊。在Flask框架中提供了Flask-Mail郵件庫(kù)來(lái)管理電子郵件的收發(fā)。

安裝Flask-Mail

執(zhí)行如下代碼安裝Flask-Mail:

pip install flask-mail

安裝后凯砍,可以執(zhí)行如下代碼查看Flask-Mail的信息:

pip show flask-mail

信息如下所示:

Name: Flask-Mail
Version: 0.9.1
Summary: Flask extension for sending email
Home-page: https://github.com/rduplain/flask-mail
Author: Dan Jacob
Author-email: danjac354@gmail.com
License: BSD
Location: c:\users\lin\desktop\flask-mail郵件\venv\lib\site-packages
Requires: blinker, Flask
Required-by:

配置Flask-Mail

在使用Flask-Mail之前箱硕,需要進(jìn)行配置。

創(chuàng)建Flask項(xiàng)目悟衩,其代碼如下所示:

from flask import Flask
from flask_mail import Mail
app =Flask(__name__)

app.config['MAIL_SERVER']='smtp.qq.com'         #郵件服務(wù)器的名稱(chēng)/IP地址
app.config['MAIL_PORT'] = 465                  #所用服務(wù)器的端口號(hào)
app.config['MAIL_USERNAME'] = 'yourmail@qq.com'     #發(fā)件人的用戶(hù)名
app.config['MAIL_PASSWORD'] = '*******'         #發(fā)件人的POP3/IMAP/SMTP服務(wù)的SSL連接客戶(hù)端授權(quán)碼
app.config['MAIL_USE_TLS'] = False              #禁用傳輸安全層加密
app.config['MAIL_USE_SSL'] = True               #啟用安全套接字層加密
mail = Mail(app)                                #創(chuàng)建郵件類(lèi)對(duì)象

if __name__ == '__main__':
     app.run(debug = True)

這里我們是使用QQ郵箱作為發(fā)件郵箱剧罩。

QQ郵箱相關(guān)服務(wù)器信息:

服務(wù)器名稱(chēng) 服務(wù)器地址 SSL協(xié)議端口號(hào) 非SSL協(xié)議端口號(hào)
IMAP imap.qq.com 993 143
SMTP smtp.qq.com 465/587 25
POP3 pop.qq.com 995 110

SSL連接客戶(hù)端授權(quán)碼可以按如下圖獲取:



下拉座泳,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)

開(kāi)啟POP3惠昔、IMAP/SMTP服務(wù)幕与,發(fā)送短信,

發(fā)送短信就會(huì)獲取到客戶(hù)端授權(quán)碼了镇防。

除了剛才我們?cè)贔lask程序中配置的參數(shù)啦鸣,還可以添加以下參數(shù):

  • MAIL_DEBUG:支持自定義調(diào)試,默認(rèn)是Flask應(yīng)用程序的調(diào)試狀態(tài)来氧;
  • MAIL_DEFAULT_SENDER:設(shè)置默認(rèn)發(fā)件人诫给;
  • MAIL_MAX_EMAILS:設(shè)置要發(fā)送的最大郵件;
  • MAIL_SUPPRESS_SEND: 如果app.testing設(shè)置為true啦扬,則發(fā)送被抑制中狂;
  • MAIL_ASCII_ATTACHMENTS: 如果設(shè)置為true,則將附加的文件名轉(zhuǎn)換為ASCII扑毡。

使用Flask-Mail

這里我們通過(guò)網(wǎng)頁(yè)的形式來(lái)發(fā)送郵件胃榕。

在上面的Flask程序中,我們編寫(xiě)視圖函數(shù)瞄摊,如下所示:

@app.route('/write')
def write_mail():
    return render_template('write.html')

這里我們首先創(chuàng)建一個(gè)write_mail視圖函數(shù)勋又,其作用是渲染write.html模板文件,write.html文件泉褐,代碼如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="{{ url_for('send_mail') }}" method="post">
        <p>收件人是:<input type="text" name="username"></p>
        <p>郵箱主題為:<input type="text" name="theme"></p>
        <p>郵箱內(nèi)容為:<input type="text" name="content"></p>
        <p><input type="submit" value="發(fā)送"></p>
    </form>
</body>
</html>

這里我們使用了url_for()方法調(diào)用視圖函數(shù)send_mail()赐写,當(dāng)點(diǎn)擊發(fā)送時(shí),就會(huì)調(diào)用send_mail()視圖函數(shù)膜赃,并把文本中輸入的數(shù)據(jù)傳遞到請(qǐng)求中挺邀。

send_mail視圖函數(shù)代碼如下所示:

@app.route('/send' ,methods=['GET','POST'])
def send_mail():
    username=request.form.get('username')       #獲取請(qǐng)求中的username參數(shù)
    theme=request.form.get('theme')             #獲取請(qǐng)求中的theme參數(shù)
    content=request.form.get('content')         #獲取請(qǐng)求中的content
    msg = Message(theme, sender='1308454615@qq.com', recipients=[username],body=content)        #使用Messgae方法
    mail.send(msg)              #使用Mail類(lèi)中的send()方法
    return '郵件發(fā)送成功'

獲取請(qǐng)求中的參數(shù),在使用Message()實(shí)例封裝郵件跳座,其語(yǔ)法結(jié)構(gòu)為:

其中:第一個(gè)參數(shù)為郵件主題端铛,第二個(gè)sender參數(shù)為發(fā)件人,第三個(gè)recipients參數(shù)為收件人疲眷,其參數(shù)值為一個(gè)列表禾蚕,所以可以同時(shí)傳入多個(gè)收件人,第四個(gè)參數(shù)為郵件內(nèi)容狂丝。

最后使用Mail類(lèi)中的send()方法發(fā)送郵件换淆,

在Mail類(lèi)中有以下方法:

方法 描述
send() 發(fā)送Message類(lèi)對(duì)象的內(nèi)容
connect() 與郵件主機(jī)打開(kāi)連接
send_message() 發(fā)送消息對(duì)象

好了,代碼已經(jīng)寫(xiě)好了几颜,啟動(dòng)Flask程序倍试,訪(fǎng)問(wèn)http://127.0.0.1:5000/write,正確輸入內(nèi)容蛋哭,如下圖所示:


點(diǎn)擊發(fā)送后县习,就會(huì)跳轉(zhuǎn)到http://127.0.0.1:5000/send網(wǎng)頁(yè)中,如下圖所示:

好了,關(guān)于Flask框架——Flask-Mail郵件就學(xué)到這里躁愿,感謝觀看叛本,下篇文章我們繼續(xù)學(xué)習(xí)Flask框架——Flask-SQLite數(shù)據(jù)庫(kù)。

公眾號(hào):白巧克力LIN

該公眾號(hào)發(fā)布Python彤钟、數(shù)據(jù)庫(kù)来候、Linux、Flask样勃、自動(dòng)化測(cè)試吠勘、Git等相關(guān)文章性芬!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末峡眶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子植锉,更是在濱河造成了極大的恐慌辫樱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俊庇,死亡現(xiàn)場(chǎng)離奇詭異狮暑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)辉饱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)搬男,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人彭沼,你說(shuō)我怎么就攤上這事缔逛。” “怎么了姓惑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵褐奴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我于毙,道長(zhǎng)敦冬,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任唯沮,我火速辦了婚禮脖旱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘介蛉。我一直安慰自己萌庆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布甘耿。 她就那樣靜靜地躺著踊兜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佳恬。 梳的紋絲不亂的頭發(fā)上捏境,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天于游,我揣著相機(jī)與錄音,去河邊找鬼垫言。 笑死贰剥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的筷频。 我是一名探鬼主播蚌成,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凛捏!你這毒婦竟也來(lái)了担忧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坯癣,失蹤者是張志新(化名)和其女友劉穎瓶盛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體示罗,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惩猫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚜点。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轧房。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绍绘,靈堂內(nèi)的尸體忽然破棺而出奶镶,到底是詐尸還是另有隱情,我是刑警寧澤脯倒,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布实辑,位于F島的核電站,受9級(jí)特大地震影響藻丢,放射性物質(zhì)發(fā)生泄漏剪撬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一悠反、第九天 我趴在偏房一處隱蔽的房頂上張望残黑。 院中可真熱鬧,春花似錦斋否、人聲如沸梨水。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疫诽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奇徒,已是汗流浹背雏亚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摩钙,地道東北人罢低。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像胖笛,于是被迫代替她去往敵國(guó)和親网持。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 首先我們現(xiàn)在qq里面開(kāi)通發(fā)送郵件服務(wù)先 首先點(diǎn)開(kāi)qq郵箱設(shè)置這里 然后點(diǎn)擊賬戶(hù)這里长踊,一直往下拉功舀,找到開(kāi)通 發(fā)送郵箱...
    阿猹在路上閱讀 277評(píng)論 0 0
  • Flask-Mail是一個(gè)對(duì)python smtplib進(jìn)行封裝以便集成到Flask提供發(fā)送郵件支持的模塊。在學(xué)習(xí)...
    摸不去的塵閱讀 1,394評(píng)論 0 0
  • [TOC] [Flask] Flask-Mail Welcome to Flask-Mail, you can u...
    ttdevs閱讀 1,492評(píng)論 0 4
  • 這一章真的好多坑,分成幾塊來(lái)寫(xiě)1.以測(cè)試Flask_mail為目的2.狗書(shū)代碼實(shí)戰(zhàn)用目錄來(lái)看本片文章更好之斯,mark...
    Hans941閱讀 1,453評(píng)論 1 3
  • 【百度云搜索日杈,搜各種資料:http://bdy.lqkweb.com】 【搜網(wǎng)盤(pán),搜各種資料:http://www...
    攻城獅筆記閱讀 541評(píng)論 0 5