2010-05-24 11 views
8

Jestem ciekawy, czy istnieje sposób na wysłanie aktywowanej wiadomości e-mail z nazwą użytkownika, hasłem przy użyciu rejestracji django. Najpierw pomyślałem o modyfikacji formularza rejestracji, ale potrzebuję jakiegoś przykładu.wyślij wiadomość e-mail aktywującą z django-rejestracją

+0

NIE wysyłaj haseł użytkowników w wiadomościach e-mail. –

Odpowiedz

11

django-registration wykorzystuje poniższy kod, wewnętrznie, aby obsłużyć wysyłanie e-maili:

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

Jeśli chcesz pracować, trzeba będzie określić DEFAULT_FROM_EMAIL wartość w swojej settings.py.

Ponadto, należy zwrócić uwagę na następujące elementy:

Poczta jest wysyłana za pomocą hosta SMTP oraz port określonej w EMAIL_HOST i ustawień EMAIL_PORT. Ustawienia EMAIL_HOST_USER i EMAIL_HOST_PASSWORD, jeśli ustawione, są wykorzystywane do uwierzytelniania serwera SMTP , a EMAIL_USE_TLS ustawienie kontrole czy bezpieczne połączenie służy.

Tak więc, aby dać przykład, oto co Użyłem w settings.py pliku do korzystania z konta 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 powinien być w stanie wysłać e-maile.

+6

I tylko dla zapisu, dla każdego, kto konfiguruje pocztę elektroniczną - ** nie ** popełnij tego błędu, używając notowań wokół portu, jak w 'EMAIL_PORT = '587''. Kosztowało mnie to kilka godzin debugowania ... –

+0

dzięki twojemu napiwkowi, dwukrotnie sprawdziłem moją błędną konfigurację adresu e-mail - tylko po to, aby odkryć, że 4 linie po ustawieniu go z kontem gmail, ustawiłem go na jakieś bzdurne konto localhost ! Problem? Rozwiązany. – bharal

+2

Myślę, że musimy użyć 'EMAIL_PORT = 587' gdy' EMAIL_USE_TLS = True' –

3

EMAIL_PORT = 465 działało rok temu. Teraz musisz użyć portu 587 z Gmailem. Powód: Django nie obsługuje SMTP z SSL od samego początku. Obsługiwane jest tylko polecenie STARTTLS Po ustawieniu połączenia tekstowego. Gmail nie obsługuje już tej opcji w porcie 465.

1

Mam nadzieję, że to komuś pomoŜe. Po rozwiązywania problemów przez pół godziny, zdałem sobie sprawę, że muszę jednoznacznie stwierdzić, jak to dobrze podczas korzystania Django Rocznik -

EMAIL_BACKEND = „django.core.mail.backends.smtp.EmailBackend”

0

django-register-activate wdrożył podobna funkcjonalność jak rejestracja django. Zasadniczo zapewnia kod do rejestracji użytkownika, weryfikacja i aktywacja e-mail, logowanie użytkownika i wylogowanie użytkownika.

Jeśli potrzebujesz przykładów implementacji własnego kodu, możesz sprawdzić views.py i forms.py w register_activate, aby uzyskać wskazówki.

Mam nadzieję, że odpowiedź pomaga. Daj mi znać, jeśli masz dalsze pytania.

Powiązane problemy