flask debug=false时,flask mail如何获取smtplib的debug日志(flask mail获取邮件发送结果)

在用flask mail发送邮件时,如果debug设置为False时,发现flask mail发送邮件时没有打印日志信息,就是reply:... send:....之类的

调查了flask mail源码,发现flask mail发送邮件通过对smtplib模块的封装实现的,在调用smtplib发送邮件之前,会传入一个debug级别参数,如果级别很低,smtplib就不会打印日志了

如果flask的debug设为False时,在mail.init_app(app)时,传入的debug参数默认就是0,所以smptblib不会打印日志

我们可以通过app.config中设置MAIL_DEBUG参数为1或更高级别来解决这个问题

分析过程:

flask mail发送邮件之前会设置mail.debug级别

 

 

 

 

该debug级别实在init_app方法中进行设置的,参数是app.config中的MAIL_DEBUG属性

如果flask的debug为False时,MAIL_DEBUG默认就会取0

 

 

 

 

smtplib中,判断debuglevel的值,如果大于0才会做打印。

 

 

 

 

 

 

app.config加入MAIL_DEBUG参数为1,smtplib模块即可打印邮件发送日志,这样就可以获取smtplib的标准输出和标准错误输出对象的内容

 

posted @ 2020-11-24 17:35  夏晓旭  阅读(358)  评论(0编辑  收藏  举报