发送消息时禁用登录 Flask-Mail
Posted
技术标签:
【中文标题】发送消息时禁用登录 Flask-Mail【英文标题】:Disable logging in Flask-Mail when sending message 【发布时间】:2019-10-09 17:46:51 【问题描述】:当通过 Flask-Mail 发送任何消息时,如下所示,带有mail.send(msg)
的最后一行也会导致邮件标题和内容被记录。
Message("Hello", sender="from@example.com", recipients=["to@example.com"])
msg.body = 'anything'
mail.send(msg)
由于我的邮件可能包含敏感信息,我想完全禁用此日志记录。然而,在使用日志模块时,我找不到为 Flask-Mail 配置的记录器。
如何在 Flask-Mail 中禁用登录?
【问题讨论】:
我知道这个问题已经接受了答案,但是我刚才遇到了同样的问题,我注意到只有当我的 bash 设置环境变量FLASK_ENV=development
时,app.extensions['mail'].debug
才是True
,当删除这个环境变量FLASK_ENV
并保留它在生产中的状态时,app.extensions['mail'].debug
是False
。考虑到这一点,我不需要在启动 Mail
类时覆盖默认功能,并且在 development
环境中打开它时我可以更轻松地调试它:)
【参考方案1】:
想出了这个:
Flask-Mail 使用 Python 的 smtplib 发送邮件。 smtplib 不使用 logging 模块,但它会将调试信息打印到 stderr。
smtplib 包括以下方法:
def set_debuglevel(self, debuglevel):
"""Set the debug output level.
A non-false value results in debug messages for connection and for all
messages sent to and received from the server.
"""
self.debuglevel = debuglevel
如果我们使用 Flask-Mail,我们可以像这样在初始化我们的应用程序时设置这个变量:
app = Flask(__name__)
mail = Mail(app)
app.extensions['mail'].debug = 0
任何输出现在都被抑制了。
【讨论】:
这会导致打印错误吗?以上是关于发送消息时禁用登录 Flask-Mail的主要内容,如果未能解决你的问题,请参考以下文章