WedX - журнал о программировании и компьютерных науках

Django не отправляет электронные письма администраторам при ошибке 500

У меня есть следующие настройки в моем проекте Django

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = '[email protected]'
SERVER_EMAIL = '[email protected]'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'               #your acc and pass
EMAIL_HOST_PASSWORD = 'somepassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

ADMINS = (('myusername', '[email protected]'),)

Но с этим Django по-прежнему не отправляет электронные письма на 500 error администраторам. Что здесь не так? В документах сказано, что я должен ввести полное имя в ADMINS настройки. Это полное имя из модели User по умолчанию? Что делать, если у меня пусты эти поля? Более того, нет проверки того, что поля должны быть уникальными, и могут ли быть другие люди с тем же именем, что и у администратора?

P.S. send_mail() из python shell работает с этими настройками.

ОБНОВЛЕНИЕ Мои настройки Logging:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'debug.log'),
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'WARNING',
            'propagate': True,
        },
    },
}
18.05.2018

  • Настроили ли вы AdminEmailHandler в настройках журнала? ? 18.05.2018
  • У вас где-то установлено DEBUG = True? Django отправляет электронное письмо ADMINS только тогда, когда DEBUG = False. 18.05.2018
  • @ FlipperPA да, я знаю, у меня есть DEBUG = False 18.05.2018

Ответы:


1

В настройках LOGGING в settings.py добавьте блок ниже в handlers

            'mail_admins': {
              'level': 'ERROR',
              'class': 'django.utils.log.AdminEmailHandler'
        },

Обновление:

Добавьте следующую строку в вышеприведенный блок, только если электронные письма будут отправляться, когда DEBUG имеет значение False.

              'filters': ['require_debug_false'],

и со следующими настройками в разделах фильтров

        'filters': {
           'require_debug_false': {
              '()': 'django.utils.log.RequireDebugFalse',
           },
           'require_debug_true': {
              '()': 'django.utils.log.RequireDebugTrue',
           },
        },  

Обновление:

Добавьте mail_admin в handlers из loggers, как показано ниже.

        'loggers': {
          'django': {
              'handlers': ['file', 'mail_admins'],
              'level': 'INFO',
              'propagate': True,
           },
         },
18.05.2018
  • require_debug_false является необязательным, если вы не хотите, чтобы электронные письма отправлялись во время DEBUG, имеет значение True. 18.05.2018
  • да на самом деле мой проект не начинается с этой опции. что это? 18.05.2018
  • DEBUG должен быть установлен в True только тогда, когда вы запускаете django локально или во время разработки. В производственных средах настоятельно рекомендуется установить для Debug значение False. 18.05.2018
  • Я это знаю, я спрашиваю о том, что мой проект не запускается с ошибкой: ValueError: Unable to configure handler 'mail_admins': Unable to add filter 'require_debug_false': 'require_debug_false' сейчас. А у меня на тот момент DEBUG = False. 18.05.2018
  • полностью удалить строку filters 18.05.2018
  • уже сделано, началось без того. поиграю с этим, спасибо. 18.05.2018
  • наконец, я проверил ваш совет, и он не работает: / Я все еще не получаю электронные письма с ошибкой 500. (Но я получаю электронные письма, например, при сбросе пароля, так что это работает). Может быть, это неправильная конфигурация ADMIN? Я указал там имя суперпользователя. Может ли он быть администратором автоматически? 23.05.2018
  • Вы должны добавить mail_admins в любой из обработчиков логгеров 24.05.2018
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]