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