2009-03-03 18 views
12

Sto utilizzando il server SMTP di Gmail per inviare e-mail dagli utenti del mio sito web.Email Django

Queste sono le impostazioni di default nel mio settings.py

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'pwd' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
SERVER_EMAIL = EMAIL_HOST_USER 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 

Se voglio un utente di inviare una e-mail, sto sovrascrivendo le impostazioni e inviare l'e-mail utilizzando la posta elettronica di Django invio di metodi. Quando si verifica un'eccezione nel sistema, ricevo un'email dall'[email protected] A volte ricevo un'email da un utente che ha effettuato l'accesso. Il che potrebbe anche significare che quando un utente riceve un'e-mail inviata dal mio sito Web ha un indirizzo inviato diverso da quello dell'utente.

Cosa si deve fare per evitare questa situazione?

risposta

22

Django utilizza solo settings.DEFAULT_FROM_EMAIL quando uno della posta invio di funzioni passano None o stringa vuota come indirizzo del mittente . Questo può essere verificato in django/core/mail.py.

Quando c'è un'eccezione non gestita Django chiama la funzione mail_admins() in django/core/mail.py che utilizza sempre settings.SERVER_EMAIL ed è solo inviati agli indirizzi indicati in settings.ADMINS. Questo può anche essere verificato in django/core/mail.py.

L'unico altro posto Django si invia e-mail è se settings.SEND_BROKEN_LINK_EMAILS è vero, allora CommonMiddleware potranno inviare una mail a tutti gli indirizzi elencati nel settings.MANAGERS e il mittente di posta elettronica è settings.SERVER_EMAIL.

Pertanto, l'unica volta che un utente normale riceverà e-mail dal tuo sito è quando chiami send_mail(). Pertanto, passa sempre un indirizzo reale come argomento from_mail e eviterete agli utenti di ricevere email dalle impostazioni .SERVER_EMAIL o .DEFAULT_FROM_EMAIL.

laterale nota: django-registrazione è almeno un esempio di un innesto Django che invierà la posta da settings.DEFAULT_FROM_EMAIL così in casi come questo è necessario assicurarsi che sia un indirizzo e-mail corretto, come il supporto @ yoursite.com o [email protected]

+0

Grazie per tutto l'aiuto. –