2013-07-04 19 views
13

Jak wysłać wiadomość e-mail z Django za pomocą hostowanego konta SMTP (w szczególności na Namecheap)?Wysyłanie wiadomości e-mail z Django za pośrednictwem hostowanego SMTP

Pomyślałem, że to będzie proste, a po prostu kwestia wypełnienia standard EMAIL_* fields w moim settings.py.

Jednak po wprowadzeniu moje poświadczenia w zarówno mój settings.py i Thunderbird, Thunderbird mogą pobierać i wysyłać e-maile, ale Django razy na z błędem „SMTPServerDisconnected: Połączenie nieoczekiwanie zamknięty”, gdy próbuje zrobić to samo.

Moje ustawienia pracy w Thunderbird do mojego serwera poczty wychodzącej (SMTP):

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

moje ustawienia nie działa w moim Django settings.py:

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 

nie są te same ustawienia? Co ja robię źle? Dlaczego jeden działa, a drugi nie?

+0

Czy możesz wyświetlić komunikat o błędzie? – Jingo

Odpowiedz

24

Problem polega na tym, że domyślny backend SMTP w Django nie obsługuje SSL, a mój host SMTP go wymagał (nie tylko TLS). Na szczęście znalazłem backend SSL SSL dirt-simple, dodano EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend' do mojego settings.py i wszystko działało.

+1

Czy mogę jakoś podać więcej punktów reputacji? To właśnie uratowało moje zdrowie psychiczne próbując połączyć się z serwerem SMTP namecheap. – bchhun

+0

ponad rok później nadal działa - właśnie użyłem go z Django 1.6.5 –

+0

działa jak zaklęcie – blurrcat

3

z poniższych ustawień:

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 

pracował dla mnie. Moja wersja testowa django to 1.8.8.

Powiązane problemy