Flask-Mail Mail() 实例化了两次

Flask-Mail Mail() instantiated twice

我正在努力理解本教程code

from flask import Flask
from flask_mail import Mail, Message

app =Flask(__name__)
mail=Mail(app) # <-- This

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) # <-- This

@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)

在第 5 行和第 13 行,Mail 对象被实例化并分配给邮件。 即使我把第5行的第一个实例化注释掉了,我仍然可以发送邮件,那我能说这只是一个错字,还是必须的?

不需要第一个mail=Mail(app)Mail() constructor 中的主要功能是读取应用配置。因此,由于在第 5 行之前未设置适当的应用程序配置变量,第一个 Mail() 对象可能甚至无法工作。