2010-05-24 18 views
8

Sono curioso di sapere se c'è un modo per inviare e-mail attivate con nome utente, password usando la registrazione django. Per prima cosa ho pensato di modificare il modulo di registrazione, ma ho bisogno di un esempio.invia activate-email con django-registration

+0

NON inviare password utente in posta elettronica. –

risposta

11

django-registration utilizza il seguente codice, internamente, per gestire l'invio di email:

send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email]) 

Se si desidera lavorare, si dovrà specificare il DEFAULT_FROM_EMAIL valore nella vostra settings.py.

Inoltre, notare quanto segue:

posta viene inviata utilizzando l'host SMTP e porta specificata nel impostazioni EMAIL_PORT EMAIL_HOST e. Le impostazioni EMAIL_HOST_USER e EMAIL_HOST_PASSWORD, se impostato, vengono utilizzati per l'autenticazione al server SMTP , e le EMAIL_USE_TLS impostazione controlla se una connessione sicura viene utilizzato.

Così, per fare un esempio, ecco quello che ho usato in un file settings.py utilizzare un account Gmail:

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 465 
EMAIL_USE_TLS = True 

EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'my_emails_password' 

django-registration dovrebbe quindi essere in grado di inviare messaggi di posta elettronica.

+6

E, solo per la cronaca, a tutti gli altri utenti che configurano la posta - ** non fare ** l'errore che ho fatto, di usare le virgolette intorno alla porta, come in 'EMAIL_PORT = '587''. Questo mi è costato alcune ore di debugging ... –

+0

grazie al tuo suggerimento, ho ricontrollato la mia errata configurazione email - solo per scoprire che 4 righe dopo averlo configurato con un account Gmail, l'avevo impostato per qualche account localhost senza senso ! Problema? Risolto. – bharal

+2

Penso che dobbiamo usare 'EMAIL_PORT = 587' quando' EMAIL_USE_TLS = True' –

3

EMAIL_PORT = 465 funzionava qualche anno fa. Ora devi usare la porta 587 con gmail. Motivo: Django non supporta SMTP con SSL dall'inizio. È supportato solo il comando STARTTLS DOPO la configurazione della connessione di testo semplice. Gmail, tuttavia, non supporta più questa opzione sulla porta 465.

1

Spero che questo aiuti qualcuno. Dopo la risoluzione dei problemi per una mezz'ora, mi sono reso conto che dovevo dichiarare esplicitamente questo pure durante l'utilizzo di django-registrazione -

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

0

django-register-activate implementato un funzionalità simile alla registrazione di django. Fondamentalmente fornisce il codice per la registrazione degli utenti, la verifica e l'attivazione della posta elettronica, il login dell'utente e il logout dell'utente.

Se sono necessari esempi per implementare il proprio codice, è possibile controllare views.py e forms.py in register_activate per ottenere alcuni suggerimenti.

Spero che la risposta sia d'aiuto. Fammi sapere se hai altre domande.