Получите django сообщение об ошибке отладки по электронной почте: - PullRequest
3 голосов
/ 07 апреля 2020

Вот моя конфигурация в django настройках:

MAILER_LIST = ['toto@toto.com']

EMAIL_HOST = 'toto.smtp.com'

EMAIL_HOST_USER = 'toto@toto.com'

EMAIL_HOST_PASSWORD = 'tata'

EMAIL_PORT = 587

EMAIL_USE_TLS = True

DEFAULT_FROM_EMAIL = 'toto@toto.com'

LOGGING = {

    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'DEBUG',
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': [],
        }
    },
    'loggers': {
         'django.request': {
             'handlers': ['mail_admins'],
             'level': 'DEBUG',
             'propagate': True,
        },
    }

}

Я пытаюсь отладить с помощью:

from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['toto@toto.com'])
email.send()

И я получаю тестовое письмо, если я вставлю это в мои настройки.

Я хотел бы получить этот отчет об ошибке по электронной почте (это всего лишь пример, и я добавил эту ошибку в свой код для проверки почтового отчета):

enter image description here

Что мне не хватает, чтобы получить журнал отладки по электронной почте? Тест отправляет электронное письмо, так что это не проблема конфигурации электронной почты ...

Я хотел бы получить отчет по электронной почте и по-прежнему показывать страницу отладки на django. И получите событие электронной почты, если отладка верна или нет.

Так что я установил DEBUG = True в своих настройках.

Спасибо и с уважением

Ответы [ 3 ]

2 голосов
/ 09 апреля 2020

Как сказано в других ответах, если вы хотите использовать django встроенный AdminEmailHandler, тогда вам нужно указать ADMINS и MANAGERS вместо MAILER_LIST в вашем settings.py. Например:

ADMINS = ['toto@toto.com']  # better to use another mail than EMAIL_HOST_USER
MANAGERS = ADMINS

Django utils.log имеют две опции для обработки вашего DEBUG значения: RequireDebugFalse и RequireDebugTrue.

Так что если вы хотите отправить Во время отладки вы отправляете сообщения об ошибках вашим администраторам (переменная ADMINS в settings.py), тогда вы можете использовать аналогичные настройки:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue'  # log while DEBUG=True
        }
    },
    'handlers': {
        'debug_mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': [require_debug_true],
        }
    },
    'loggers': {
         'django.request': {
             'handlers': ['debug_mail_admins'],
             'level': 'ERROR',
             'propagate': True,
        },
    }
}

Upd.:

Также вы можете использовать logging.handlers.SMTPHandler , Тогда вы можете написать что-то похожее на этот код: https://code.djangoproject.com/ticket/15917

0 голосов
/ 07 апреля 2020

Вы должны использовать ADMINS:

ADMINS = ['notifications@example.com']

Список всех людей, которые получают уведомления об ошибках кода. Когда DEBUG = False и AdminEmailHandler настроен в LOGGING (по умолчанию), Django отправляет по электронной почте этим людям подробности исключений, возникающих в цикле запроса / ответа.

Подробнее здесь

0 голосов
/ 07 апреля 2020

Django обрабатывает это для вас, вы можете добавить

MANAGERS = ['mail@mail.com']

или посмотреть на интеграцию часового для более надежной отчетности об ошибках, часовой также бесплатно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...