Flask-Mail Mail()实例化两次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask-Mail Mail()实例化两次相关的知识,希望对你有一定的参考价值。

我想了解这个教程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行之前没有设置适当的app配置变量,所以第一个Mail()对象可能甚至不起作用。

以上是关于Flask-Mail Mail()实例化两次的主要内容,如果未能解决你的问题,请参考以下文章

C++ boost线程在实例化两次时导致分段错误

Flask-mail 发邮件慢(即使异步)

Flask-Mail发送QQ邮件

Flask-Mail 尝试连接到 Gmail 时超时

Flask-Mail 如何将多个文件添加到邮件中?

Flask扩展 -- flask-mail