基于web的應(yīng)用程序通常需要具有向用戶/客戶端發(fā)送郵件的功能。
Flask-Mail擴(kuò)展使得與任何電子郵件服務(wù)器建立簡單的接口變得非常容易。
首先,應(yīng)該在pip實用程序的幫助下安裝Flask-Mail擴(kuò)展。
pip install Flask-Mail
然后需要通過設(shè)置以下應(yīng)用程序參數(shù)的值來配置Flask-Mail。
序號 | 參數(shù)與描述 |
---|---|
1 |
MAIL_SERVER 電子郵件服務(wù)器的名稱/IP地址 |
2 |
MAIL_PORT 使用的服務(wù)器的端口號 |
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ā)送的最大郵件數(shù) |
10 |
MAIL_SUPPRESS_SEND 如果app.testing設(shè)置為true,則發(fā)送被抑制 |
11 |
MAIL_ASCII_ATTACHMENTS 如果設(shè)置為true,則附加的文件名將轉(zhuǎn)換為ASCII |
flask-mail模塊包含以下重要類的定義。
它管理電子郵件消息傳遞需求。類構(gòu)造函數(shù)采用以下形式:
flask-mail.Mail(app = None)
構(gòu)造函數(shù)將Flask應(yīng)用程序?qū)ο笞鳛閰?shù)。
序號 | 方法與描述 |
---|---|
1 |
send() 發(fā)送Message類對象的內(nèi)容 |
2 |
connect() 打開與郵件主機(jī)的連接 |
3 |
send_message() 發(fā)送消息對象 |
它封裝了一封電子郵件。Message類構(gòu)造函數(shù)有幾個參數(shù):
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ù)
處置 - 內(nèi)容處置(如果有的話)。
add_recipient() - 向郵件添加另一個收件人
在下面的示例中,Google gmail服務(wù)的SMTP服務(wù)器用作Flask-Mail配置的MAIL_SERVER。
步驟1 - 在代碼中從flask-mail模塊導(dǎo)入Mail和Message類。
from flask_mail import Mail, Message
步驟2 - 然后按照以下設(shè)置配置Flask-Mail。
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)建Mail類的實例。
mail = Mail(app)
步驟4 - 在由URL規(guī)則(‘/’)映射的Python函數(shù)中設(shè)置Message對象。
@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 - 整個代碼如下。
在Python Shell中運(yùn)行以下腳本并訪問http://localhost:5000/。
from flask import Flask
from flask_mail import Mail, Message
app =Flask(__name__)
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)置不安全功能可能會阻止此次登錄嘗試。您可能必須降低安全級別。請登錄您的Gmail帳戶并訪問此鏈接以降低安全性。
更多建議: