2015-08-13 6 views
5

Sto usando Django 1.8. Questo è il mio file impostazioni di base:Django non invia email di errore - come posso eseguire il debug?

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 

E queste sono le mie impostazioni di produzione:

########## 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 

E 'usato per inviare email errore di produzione, ma si è fermato. Ho impostato una pagina che restituisce 500 errori in modo che possa testarlo ulteriormente - nessuna email viene inviata quando la carico.

Ho provato il debug le cose ovvie:

  • Posso ancora accedere al [email protected] e non sembra essere stato bloccato.
  • Ho controllato il mio filtro antispam.
  • Sono sicuro che DEBUG è impostato su false.
  • Credo che la variabile di ambiente GMAIL_PASS sia disponibile per l'utente Django.

Come posso eseguire il debug di questo ulteriore?

+1

Prima di tutto, controlla che i messaggi vengano inviati. Impostare 'HOST' su' localhost', 'PORT' su' 1025', disabilitare 'TLS' ed eseguire un server SMTP fittizio usando questo comando:' python -m smtpd -n -c DebuggingServer localhost: 1025' – zopieux

+1

In caso aiuta chiunque, mi ci è voluto un po 'per capire che non devi solo specificare 'mail_admins' sotto la chiave' handlers', ma devi ** anche ** abilitare quel gestore sotto la chiave 'logger' –

risposta

2
  • Per la parte di debug della questione

    @zopieux commentato:

    In primo luogo, verificare che le mail vengono inviati. Set:

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

    Poi eseguire un server SMTP dummy:

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

    Se funziona, è possibile ripristinare le modifiche e manualmente inviare una mail come descritto in questo relevant question:

    from django.core.mail import EmailMessage 
    email = EmailMessage('Hello', 'World', to=['[email protected]']) 
    email.send() 
    
  • Per la funzionalità di utilizzo di Google come server SMTP:

    The most popular -e aggiornato- la risposta della domanda indica che Google non supporta più questa funzione (2016) e che si dovrebbe cercare di trovare un altro server SMTP.

Ho inviato il mio lavoro logging configuration per riferimento.

Problemi correlati