当前位置:  开发笔记 > 编程语言 > 正文

我如何通过电子邮件向Flask发送错误日志?

如何解决《我如何通过电子邮件向Flask发送错误日志?》经验,为你挑选了1个好方法。

如果应用程序中出现404或500错误,如何让Flask向我发送电子邮件?我config.py在这里遇到了以下内容,但我没有收到任何电子邮件.我是Flask的新手所以请原谅任何错误.

from app import app

ADMINS = ['myemail@domain.com']
if not app.debug:
    import logging
    from logging.handlers import SMTPHandler
    mail_handler = SMTPHandler('smtpout.secureserver.net',
                               'info@mydomain.com',
                               ADMINS, 'YourApplication Failed',
                               credentials=('info@mydomain.com','***'),
                               port=25)
    mail_handler.setLevel(logging.ERROR)
    app.logger.addHandler(mail_handler)

我也对文档中的这一行感到困惑:

如果您的邮件服务器需要凭据,也可以提供这些凭据.

我的服务器不是"邮件服务器".我应该提供什么证书?我的电子邮件是在GoDaddy上托管的.



1> Sergio Ayest..:

您需要添加电子邮件的凭据(用户名和密码),如下所示:

mail_handler = SMTPHandler(mailhost=('smtpout.secureserver.net',25),
                           fromaddr='info@mydomain.com',
                           toaddrs=ADMINS, subject='YourApplication Failed',
                           credentials=('mail_username','mail_password'))

实质上,您需要登录您的邮件帐户(来自godaddy)才能发送电子邮件.所使用的IP需要是godaddy为STMP服务提供的IP(我相信它是smtpout.secureserver.net),没有SSL的端口是25,80,3535之一,如果你使用SSL端口是465.

希望能帮助到你!

编辑:因为它仍然无法正常工作,我应该添加一个完整的最小源代码来测试它,这是快速启动最小的hello word示例修改为发生错误时发送电子邮件并始终失败(它将发送一个每次访问该页面时都会收到电子邮件),在godaddy(我们)上进行全面测试:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    raise Exception
    #return 'Hello World!'

if __name__ == '__main__':
    ADMINS = ['admin@mydomain.com']
    if not app.debug:
        import logging
        from logging.handlers import SMTPHandler
        mail_handler = SMTPHandler(mailhost=('smtpout.secureserver.net',25),
                           fromaddr='admin@mydomain.com',
                           toaddrs=ADMINS, subject='YourApplication Failed',
                           credentials=('admin@mydomain.com','mypassword'))
        mail_handler.setLevel(logging.ERROR)
        app.logger.addHandler(mail_handler)
    app.run()

重要的是你需要检查你需要使用的实际smtp服务器.当您登录godaddy时,单击电子邮件管理员按钮(电子邮件工作区上的按钮),转到顶部菜单工具 - >服务器功能.在那之后选择你的域并在最后一行(SMTP)中,您应该看到一个类似我为smtp传出访问提供的域,在我的情况下,我对不同的域有不同的域:

smtpout.asia.secureserver.net
smtpout.secureserver.net

找到您需要使用的那个并修改我的示例代码,您应该立即在godaddy电子邮件的Web界面上收到电子邮件.

获得正确的服务器并使用您的凭据后,您应该在运行应用程序时收到类似这样的电子邮件:

Exception on / [GET]
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\flask\app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "C:\Python27\lib\site-packages\flask\app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Python27\lib\site-packages\flask\app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Python27\lib\site-packages\flask\app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Python27\lib\site-packages\flask\app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "hello.py", line 6, in hello_world
raise Exception
Exception

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有