【问题标题】:Django - Using a different email backend for admin error emailsDjango - 为管理员错误电子邮件使用不同的电子邮件后端
【发布时间】:2013-09-30 20:29:41
【问题描述】:

我在我的 Django 应用程序中使用自定义电子邮件后端(在本例中为 CeleryEmailBackend):

EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'

我的日志配置:

LOGGING = {
    # ...
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler',
    },
    # ...
}

管理员错误电子邮件也由同一电子邮件后端发送。
因此,如果电子邮件后端出现问题(例如 Celery 没有运行)。然后我就不会收到服务器错误邮件了。

有没有办法让AdminEmailHandler 使用自定义电子邮件后端?

【问题讨论】:

    标签: python django logging django-settings django-email


    【解决方案1】:

    这是可能的,但在 django 1.6 中,引用 documentation:

    通过设置 AdminEmailHandler 的 email_backend 参数,电子邮件 处理程序正在使用的后端可以被覆盖,例如 这个:

    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'email_backend': 'django.core.mail.backends.filebased.EmailBackend',
        }
    },
    

    如果您不想升级(例如,因为 1.6 不稳定),请考虑基于 AdminEmailHandler 制作自定义电子邮件处理程序。应该不难,因为这个new feature 的实际实现非常简单明了(参见pull-request)。

    或者,您实际上可以从 django 1.6 中提取整个 AdminEmailHandler 类并将其用作自定义电子邮件处理程序。

    【讨论】:

    • 刚刚找到... 1.5 有什么解决方法吗?
    • 太棒了!非常感谢。
    • 出于某种原因,这个解决方案对我来说不适用于 1.8。有类似问题的吗??
    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多