2013-06-04 11 views
11

. ACCOUNT_EMAIL_VERIFICATION = ("mandatory")'u ayarlıyorum, iyi çalışıyor ve kullanıcı bir doğrulama e-postası alıyor. Ancak, herhangi bir e-posta doğrulaması gerektirmediğinden, kullanıcı yalnızca kayıt olmak ve bir hoş geldiniz e-postası almalıdır. settings.py-Django-allauth: (doğrulama olmadan) kayıt karşılama e-posta göndermek I (django-allauth kullanarak) Django uygulaması üzerinde yukarı imzalar bir kullanıcıya bir karşılama e gönderebilir nasıl

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' 

karşılama kayıt posta gönderir Kaçırdığım herhangi bir ayar var mı? Yoksa görüşümden geçmek zorunda mıyım? Bunun için yolu anlamaya çalışıyor gibiydi. Herhangi bir yardım harika olurdu. Teşekkürler.

cevap

23

Hayır, böyle bir ayar yoktur, ancak user ve request parametrelerine sahip olan user_signed_up sinyalini dinleyebilirsiniz. Alındıktan sonra kullanıcıya bir e-posta gönderin.

models.py dosyasında aşağıdaki kodu bazı yerde koyun:

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

Yanıt için teşekkürler! işe yaradı!! E-postayı göndermek için ben send_mail'i kullanıyorum ('Hoş Geldiniz', 'Abc.com adresindeki kayıtlarınız başarılı. Kullanıcı adınız% s'% user.username, 'Merhaba <[email protected]>', [user.email]) E-postanın gövdesi için bir şablonun (tek bir metin satırı değil) nasıl kullanılacağını bilmese de, bunu çözeceğim, çözümünüz hile yaptı! Teşekkürler –

7

allauth gerçekten sadece onay postaları gönderir. Ancak, ilk (kayıt) onay postası ve aşağıdakilerden farklıdır (örneğin, kullanıcı ikinci bir e-posta adresi eklediğinde).

Bu amaçla allauth " şablonunda (account/email/email_confirmation_signup_message.txt, account/email/email_confirmation_signup_subject.txt)" e-posta onayına sahiptir.

yerleşik şablonları kullanırken bu melez onay/kayıt/karşılama posta düzenli e-posta doğrulama şablonu ile aynı olduğundan, ancak bunu geçersiz kılmak ve orada bir hoş geldin iletisi koyabilirsiniz. Ayrıca ACCOUNT_EMAIL_VERIFICATION'u "optional"'a ayarlayın. Bu tüm ihtiyaçlarını uymuyorsa

, o zaman user_signed_up sinyaline Kargaburun ve düz bir karşılama kendinizi mail gönderebilir.

+0

Teşekkür ederim, kayıt sırasında onay e-postasını göndermek istemediğim için "isteğe bağlı" kullanamıyorum (kullanıcı doğrulamadığı halde). Belki de user_signed_up sinyalini kullanıyorum, bu onu işe yaradı. –

+0

, user_signed_up sinyalinizi paylaşabilir misiniz? – milan

İlgili konular