基于Web的應(yīng)用程序通常需要具有向用戶/客戶端發(fā)送郵件的功能。 Flask-Mail擴(kuò)展使得用任何電子郵件服務(wù)器設(shè)置一個(gè)簡單接口變得非常簡單。
起初,F(xiàn)lask-Mail擴(kuò)展可使用pip工具來安裝,如下所示 -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.soo66.com # Date : 2020-08-08 pip install Flask-Mail
然后需要通過設(shè)置以下應(yīng)用程序參數(shù)的值來配置Flask-Mail。
編號(hào) | 參數(shù) | 描述 |
1 | MAIL_SERVER | 郵件服務(wù)器的名稱/IP地址 |
2 | MAIL_PORT | 所用服務(wù)器的端口號(hào) |
3 | MAIL_USE_TLS | 啟用/禁用傳輸安全層加密 |
4 | MAIL_USE_SSL | 啟用/禁用安全套接字層加密 |
5 | MAIL_DEBUG | 調(diào)試支持,默認(rèn)是Flask應(yīng)用程序的調(diào)試狀態(tài) |
6 | MAIL_USERNAME | 發(fā)件人的用戶名 |
7 | MAIL_PASSWORD | 發(fā)件人的密碼 |
8 | MAIL_DEFAULT_SENDER | 設(shè)置默認(rèn)發(fā)件人 |
9 | MAIL_MAX_EMAILS | 設(shè)置要發(fā)送的最大郵件 |
10 | MAIL_SUPPRESS_SEND | 如果app.testing設(shè)置為true,則發(fā)送被抑制 |
11 | MAIL_ASCII_ATTACHMENTS | 如果設(shè)置為true,則將附加的文件名轉(zhuǎn)換為ASCII |
flask-mail模塊包含以下重要類的定義。
它管理電子郵件消息的要求。 類構(gòu)造函數(shù)采用以下形式 -
編號(hào) | 方法 | 描述 |
1 | send() | 發(fā)送Message類對象的內(nèi)容 |
2 | connect() | 與郵件主機(jī)打開連接 |
3 | send_message() | 發(fā)送消息對象 |
它封裝了一封電子郵件,Message類的構(gòu)造函數(shù)有幾個(gè)參數(shù) -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.soo66.com # Date : 2020-08-08 flask-mail.Message(subject, recipients, body, html, sender, cc, bcc, reply-to, date, charset, extra_headers, mail_options, rcpt_options)
attach() - 向消息添加附件。 該方法采用以下參數(shù) - filename - 要附加的文件的名稱 content_type - 文件的MIME類型 data - 原始文件數(shù)據(jù) disposition - 內(nèi)容處置,如果有的話。
add_recipient() - 向消息添加另一個(gè)收件人
在以下示例中,Google的Gmail服務(wù)的SMTP服務(wù)器用作Flask-Mail配置的MAIL_SERVER。
第1步 - 在代碼中從flask-mail模塊導(dǎo)入Mail和Message類。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.soo66.com # Date : 2020-08-08 from flask_mail import Mail, Message
第2步 - 然后根據(jù)以下設(shè)置配置Flask-Mail。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.soo66.com # Date : 2020-08-08 app.config['MAIL_SERVER']='smtp.gmail.com' app.config['MAIL_PORT'] = 465 app.config['MAIL_USERNAME'] = 'yourId@gmail.com' app.config['MAIL_PASSWORD'] = '*****' app.config['MAIL_USE_TLS'] = False app.config['MAIL_USE_SSL'] = True
第3步 - 創(chuàng)建一個(gè)Mail類的實(shí)例。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.soo66.com # Date : 2020-08-08 mail = Mail(app)
第4步 - 在由URL規(guī)則映射的Python函數(shù)(‘/‘)中設(shè)置Message對象。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.soo66.com # Date : 2020-08-08 @app.route("/") def index(): msg = Message('Hello', sender = 'yourId@gmail.com', recipients = ['id1@gmail.com']) msg.body = "This is the email body" mail.send(msg) return "Sent"
第5步 - 整個(gè)代碼如下。 在Python Shell中運(yùn)行以下腳本并訪問URL: http://localhost:5000/。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.soo66.com # Date : 2020-08-08 from flask import Flask from flask_mail import Mail, Message app =Flask(__name__) mail=Mail(app) app.config['MAIL_SERVER']='smtp.gmail.com' app.config['MAIL_PORT'] = 465 app.config['MAIL_USERNAME'] = 'yourId@gmail.com' app.config['MAIL_PASSWORD'] = '*****' app.config['MAIL_USE_TLS'] = False app.config['MAIL_USE_SSL'] = True mail = Mail(app) @app.route("/") def index(): msg = Message('Hello', sender = 'yourId@gmail.com', recipients = ['id1@gmail.com']) msg.body = "Hello Flask message sent from Flask-Mail" mail.send(msg) return "Sent" if __name__ == '__main__': app.run(debug = True)
請注意,Gmail服務(wù)中的內(nèi)置不安全功能可能會(huì)阻止此登錄嘗試,可能需要降低安全級別。 請登錄到您的Gmail帳戶并訪問 此鏈接以降低安全性。