2015-08-13 9 views
5

Ich benutze Django 1.8. Dies ist meine Grundeinstellungsdatei:Django sendet keine Fehler-E-Mails - wie kann ich debuggen?

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     } 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    } 
} 
ADMINS = (
    ('ME', '[email protected]'), 
) 
MANAGERS = ADMINS 

Und das sind Produktionseinstellungen:

########## EMAIL CONFIGURATION 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = utils.get_env_setting('GMAIL_PASS') 
EMAIL_SUBJECT_PREFIX = '[%s] ' % SITE_NAME 
SERVER_EMAIL = EMAIL_HOST_USER 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 
########## END EMAIL CONFIGURATION 

Es verwendet Fehler E-Mail in der Produktion zu senden, aber nicht mehr. Ich habe eine Seite eingerichtet, die 500 Fehler zurückgibt, so dass ich das weiter testen kann - keine E-Mails werden gesendet, wenn ich sie lade.

Ich habe versucht, die offensichtlichen Dinge debuggen:

  • ich noch in [email protected] anmelden und es scheint nicht blockiert worden zu sein.
  • Ich habe meinen Spamfilter überprüft.
  • Ich bin sicher, dass DEBUG falsch gesetzt ist.
  • Ich glaube, die GMAIL_PASS Umgebungsvariable ist für den Django-Benutzer verfügbar.

Wie kann ich das weiter debuggen?

+1

Überprüfen Sie zunächst, ob E-Mails gesendet werden. Setzen Sie den 'HOST' auf' localhost', den 'PORT' auf' 1025', deaktivieren Sie 'TLS' und führen Sie einen Pseudo-SMTP-Server mit folgendem Befehl aus:' python -m smtpd -n -c DebuggingServer localhost: 1025' – zopieux

+1

Im Fall es hilft jedem, es hat eine Weile gedauert, bis ich herausgefunden habe, dass Sie nicht nur die 'mail_admins' unter dem' handlers' Schlüssel angeben müssen, sondern ** ** auch ** diesen Handler unter dem 'loggers' Schlüssel aktivieren müssen –

Antwort

2
  • Für das Debugging Teil der

    @zopieux Frage kommentiert:

    Prüfen Sie zunächst, dass E-Mails gesendet werden. Set:

    EMAIL_HOST = 'localhost' 
    EMAIL_PORT = 1025 
    EMAIL_USE_TLS = False 
    EMAIL_USE_SSL = False 
    

    Dann einen Dummy-SMTP-Server ausführen:

    python -m smtpd -n -c DebuggingServer localhost:1025

    Wenn dies funktioniert, können Sie die Änderungen rückgängig machen können und manuell eine E-Mail senden, wie in diesem relevant question beschrieben:

    from django.core.mail import EmailMessage 
    email = EmailMessage('Hello', 'World', to=['[email protected]']) 
    email.send() 
    
  • Für die Funktion der Verwendung von Google als SMTP-Server:

    The most popular -und aktualisiert- Antwort der Frage besagt, dass Google diese Funktion (2016) nicht mehr unterstützt und dass Sie versuchen sollten, einen anderen SMTP-Server zu finden.

Ich habe meine Arbeit logging configuration als Referenz veröffentlicht.