2013-06-04 4 views
11

Jak wysłać wiadomość powitalną do użytkownika, który zarejestruje się w aplikacji django (przy użyciu django-allauth). Jeśli ustawię ACCOUNT_EMAIL_VERIFICATION = ("mandatory"), działa dobrze, a użytkownik otrzyma e-mail weryfikacyjny. Ale ponieważ nie wymagam żadnej weryfikacji przez e-mail, więc użytkownik powinien po prostu zarejestrować się i otrzymać wiadomość powitalną.Django-allauth: wyślij e-mail powitalny przy rejestracji (bez weryfikacji)

settings.py-

ACCOUNT_AUTHENTICATION_METHOD = ("email") 
ACCOUNT_EMAIL_VERIFICATION = ("none") 
ACCOUNT_SIGNUP_PASSWORD_VERIFICATION = False 
ACCOUNT_UNIQUE_EMAIL = True 
ACCOUNT_USERNAME_REQUIRED = False 
EMAIL_CONFIRMATION_SIGNUP = True 
ACCOUNT_EMAIL_REQUIRED =True 
LOGIN_REDIRECT_URL = '/' 
LOGOUT_URL = '/' 
ACCOUNT_LOGOUT_ON_GET =False 
ACCOUNT_LOGOUT_REDIRECT_URL = '/' 
SOCIALACCOUNT_QUERY_EMAIL = (ACCOUNT_EMAIL_REQUIRED) 
SOCIALACCOUNT_AUTO_SIGNUP = True 
SOCIALACCOUNT_AVATAR_SUPPORT = ('avatar' in INSTALLED_APPS) 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '##' 
EMAIL_HOST_PASSWORD = '##' 
EMAIL_PORT = 587 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 

Czy istnieje ustawienie Tęskniłem który wysyła wiadomość powitalną rejestracyjny? Czy muszę przekazać to przez moje poglądy? Nie wydaje mi się, żeby to wytyczył. Każda pomoc byłaby świetna. Dzięki.

Odpowiedz

23

Nie ma takich ustawień, ale można odsłuchiwać sygnał user_signed_up, który będzie miał parametry w postaci user i request. Po otrzymaniu wiadomości wyślij wiadomość e-mail do użytkownika.

Umieść poniższy kod pewne gdzie w models.py pliku:

from allauth.account.signals import user_signed_up 
from django.dispatch import receiver 

@receiver(user_signed_up, dispatch_uid="some.unique.string.id.for.allauth.user_signed_up") 
def user_signed_up_(request, user, **kwargs): 
    # user signed up now send email 
    # send email part - do your self 
+0

Dzięki za odpowiedź! to się udało!! Aby wysłać wiadomość e-mail używam send_mail ("Witamy", "Twoja rejestracja na abc.com zakończyła się powodzeniem. Twoja nazwa użytkownika to% s '% user.username," Hello <[email protected]>', [user.email]) Chociaż nie wiem, jak użyć szablonu tutaj (nie pojedynczego wiersza tekstu) dla treści wiadomości e-mail, a ja to wymyślę, twoje rozwiązanie załatwiło sprawę! Dzięki –

7

allauth wysyła rzeczywiście tylko maile z potwierdzeniem. Rozróżnia jednak pierwszą pocztę potwierdzającą (rejestrację) i następującą (np. Gdy użytkownik doda drugi adres e-mail).

W tym celu allauth ma szablon "e-mail z potwierdzeniem rejestracji" (account/email/email_confirmation_signup_message.txt, account/email/email_confirmation_signup_subject.txt).

Podczas korzystania z wbudowanych szablonów hybrydowy komunikat potwierdzający/zapis/powitalny jest identyczny ze zwykłym szablonem potwierdzenia wiadomości e-mail, ale można go przesłonić i umieścić tam wiadomość powitalną. Ponadto ustaw ACCOUNT_EMAIL_VERIFICATION na "optional".

Jeśli wszystko to nie odpowiada Twoim potrzebom, możesz podłączyć się do sygnału user_signed_up i wysłać zwykłą wiadomość powitalną.

+0

Dzięki, nie mogę użyć opcji "opcjonalnie", ponieważ nie chcę wysyłać e-maila z potwierdzeniem podczas rejestracji (nawet jeśli użytkownik nie weryfikuje). Być może używam sygnału user_signed_up, który sprawił, że działa. –

+0

Czy możesz udostępnić swój sygnał user_signed_up? – milan