2013-07-04 15 views
13

Come si invia un messaggio di posta elettronica da Django utilizzando un account SMTP ospitato (in particolare su Namecheap)?Invio di email da Django tramite SMTP ospitato

Ho pensato che sarebbe stato semplice, e semplicemente una questione di compilare il standard EMAIL_* fields nel mio settings.py.

Tuttavia, dopo aver inserito le mie credenziali in sia mia settings.py e Thunderbird, Thunderbird può scaricare e inviare e-mail, ma Django volte fuori con l'errore "SMTPServerDisconnected: Collegamento inaspettatamente chiuso" quando si tenta di fare lo stesso.

mie impostazioni di lavoro a Thunderbird per il mio server in uscita (SMTP):

Server Name: oxmail.registrar-servers.com 
Port: 465 
User Name: [email protected] 
Authentication method: Normal password 
Connection Security: SSL/TLS 

mia configurazione non funzionava nella mia settings.py Django:

EMAIL_HOST = 'oxmail.registrar-servers.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'mypassword' 
EMAIL_PORT = 465 
EMAIL_USE_TLS = True 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 

non sono queste impostazioni identiche? Che cosa sto facendo di sbagliato? Perché uno lavora mentre l'altro fallisce?

+0

Puoi mostrare un messaggio di errore? – Jingo

risposta

24

Risulta il problema è che il back-end SMTP predefinito in Django non supporta SSL e il mio host SMTP richiesto (non solo TLS). Fortunatamente, ho trovato un backend SSL dirt-simple, aggiunto EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend' al mio settings.py e tutto ha funzionato.

+1

Posso darti più punti reputazione in qualche modo? Questo mi ha appena salvato la ragione, provando a connetterti al server SMTP di namecheap. – bchhun

+0

più di un anno dopo funziona ancora - L'ho appena usato con Django 1.6.5 –

+0

funziona come un fascino – blurrcat

3

Le seguenti impostazioni:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'mail.yourdomain.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'password' 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 

lavorato per me. La mia versione di django che ho provato con 1.8.8.