发送消息时禁用 Flask-Mail 中的日志记录

Fel*_*lix 3 python flask flask-mail

当通过 Flask-Mail 发送任何消息时,如下所示,最后一行mail.send(msg)也将导致邮件标题和内容被记录。

Message("Hello", sender="from@example.com", recipients=["to@example.com"])
msg.body = 'anything'
mail.send(msg)
Run Code Online (Sandbox Code Playgroud)

由于我的邮件可能包含敏感信息,我想完全禁用此日志记录。然而,在使用日志模块时,我找不到为 Flask-Mail 配置的记录器。

如何禁用 Flask-Mail 中的日志记录?

Fel*_*lix 8

想出了这个:

Flask-Mail 使用 Python 的smtplib发送邮件。smtplib 不使用日志记录模块,但它会将调试信息打印到 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
Run Code Online (Sandbox Code Playgroud)

如果我们使用 Flask-Mail,我们可以在初始化我们的应用程序时设置这个变量,如下所示:

app = Flask(__name__)
mail = Mail(app)
app.extensions['mail'].debug = 0
Run Code Online (Sandbox Code Playgroud)

现在任何输出都被抑制。