2013-06-04 3 views
11

Wie kann ich eine Willkommens-E-Mail an einen Benutzer senden, der sich bei einer Django-App anmeldet (mit django-allauth). Wenn ich ACCOUNT_EMAIL_VERIFICATION = ("mandatory") einstelle, funktioniert es einwandfrei und der Benutzer erhält eine Bestätigungs-E-Mail. Aber da ich keine E-Mail-Bestätigung benötige, sollte sich der Benutzer einfach anmelden und eine Willkommens-E-Mail erhalten.Django-allauth: Willkommens-E-Mail bei der Anmeldung senden (ohne Bestätigung)

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' 

Gibt es eine Einstellung, die ich verpasst, die die Begrüßungs Anmeldungen Mail sendet? Oder muss ich es durch meine Ansichten weitergeben? Kann nicht den Weg dafür finden. Jede Hilfe wäre großartig. Vielen Dank.

Antwort

23

Nein, es gibt keine solchen Einstellungen, aber Sie können ein Signal hören, das die Parameter user und request in Parametern haben wird. Sobald es erhalten wurde, senden Sie eine E-Mail an den Benutzer.

Setzen Sie den Code unten einige, wo in models.py Datei:

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

Danke für die Antwort! das hat funktioniert!! Um die Email zu senden benutze ich send_mail ('Willkommen', 'Ihre Registrierung bei abc.com ist erfolgreich. Ihr Benutzername ist% s'% user.username, 'Hallo <[email protected]>', [user.email]) Obwohl ich nicht weiß, wie man hier eine Vorlage (keine einzelne Textzeile) für den Text der E-Mail verwendet, und ich werde es herausfinden, Ihre Lösung hat den Trick! Danke –

7

allauth tatsächlich sendet nur Bestätigungsmails. Es unterscheidet jedoch zwischen der ersten (Anmelde-) Bestätigungsmail und den folgenden (z.B. wenn der Benutzer eine zweite Emailadresse hinzufügt).

Für diesen Zweck hat allauth eine "E-Mail Bestätigung bei der Anmeldung" Vorlage (account/email/email_confirmation_signup_message.txt, account/email/email_confirmation_signup_subject.txt).

Bei Verwendung der integrierten Vorlagen ist diese hybride Bestätigung/Anmeldung/Willkommensmail identisch mit der regulären E-Mail-Bestätigungsvorlage, aber Sie können sie überschreiben und Ihre Willkommensnachricht dort eingeben. Setzen Sie außerdem ACCOUNT_EMAIL_VERIFICATION auf "optional".

Wenn all dies nicht Ihren Anforderungen entspricht, können Sie sich an das user_signed_up Signal anschließen und eine Begrüßungsmail senden.

+0

Danke, ich kann "optional" nicht verwenden, da ich die Bestätigungs-E-Mail bei der Anmeldung nicht senden möchte (auch wenn der Benutzer dies nicht überprüft). Vielleicht benutze ich das Signal user_signed_up, das hat es funktioniert. –

+0

können Sie Ihr user_signed_up Signal teilen? – milan