2013-06-04 8 views
11

मैं किसी ऐसे उपयोगकर्ता को एक स्वागत ईमेल कैसे भेज सकता हूं जो django ऐप (django-allauth का उपयोग करके) पर साइन अप करता है। अगर मैं ACCOUNT_EMAIL_VERIFICATION = ("mandatory") सेट करता हूं, तो यह ठीक काम करता है, और उपयोगकर्ता को एक सत्यापन ईमेल मिलता है। लेकिन चूंकि मुझे किसी भी ईमेल सत्यापन की आवश्यकता नहीं है, इसलिए उपयोगकर्ता को साइन अप करना चाहिए और एक स्वागत ईमेल प्राप्त करना चाहिए।Django-allauth: साइनअप पर स्वागत ईमेल (सत्यापन के बिना)

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' 

वहाँ किसी भी सेटिंग मैं याद किया जो स्वागत साइनअप मेल भेजता है? या क्या मुझे इसे अपने विचारों से गुजरना है? ऐसा लगता है कि इस के लिए रास्ता पता लगाना चाहिए। कोई भी मदद बहुत अच्छी रहेगी। धन्यवाद।

उत्तर

23

कोई ऐसी सेटिंग्स नहीं है, लेकिन आप user_signed_up सिग्नल सुन सकते हैं, जिसमें पैरामीटर में user और request होगा। एक बार यह उपयोगकर्ता को एक ईमेल भेज दिया।

models.py फ़ाइल में नीचे दिए गए कोड कुछ जहां रखो:

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

प्रतिक्रिया के लिए धन्यवाद! वह काम किया!! ईमेल भेजने के लिए मैं send_mail ('वेलकम' का उपयोग करता हूं, 'abc.com पर आपका पंजीकरण सफल है। आपका उपयोगकर्ता नाम% s'% user.username है, 'हैलो <[email protected]>', [user.email]) हालांकि मुझे नहीं पता कि ईमेल के शरीर के लिए यहां टेम्पलेट का उपयोग कैसे करें (पाठ की एक पंक्ति नहीं) और मैं इसे समझूंगा, आपके समाधान ने चाल की है! धन्यवाद –

7

allauth वास्तव में केवल पुष्टि मेल भेजता है। लेकिन, यह पहले (साइनअप) पुष्टिकरण मेल और निम्न के बीच अंतर करता है (उदाहरण के लिए जब उपयोगकर्ता दूसरा ईमेल पता जोड़ता है)।

इस उद्देश्य के लिए allauth में "साइनअप पर ईमेल पुष्टिकरण" टेम्पलेट (account/email/email_confirmation_signup_message.txt, account/email/email_confirmation_signup_subject.txt) है।

बिल्टिन टेम्पलेट्स का उपयोग करते समय यह हाइब्रिड पुष्टिकरण/साइनअप/स्वागत मेल नियमित ईमेल पुष्टिकरण टेम्पलेट के समान होता है, लेकिन आप इसे ओवरराइड कर सकते हैं और अपना स्वागत संदेश वहां पर रख सकते हैं। इसके अलावा, ACCOUNT_EMAIL_VERIFICATION से "optional" पर सेट करें।

यदि यह सब आपकी आवश्यकताओं के अनुरूप नहीं है, तो आप user_signed_up सिग्नल पर हुकअप कर सकते हैं और एक सादा स्वागत मेल स्वयं भेज सकते हैं।

+0

धन्यवाद, मैं "वैकल्पिक" का उपयोग नहीं कर सकता क्योंकि मैं साइनअप पर पुष्टिकरण ईमेल नहीं भेजना चाहता हूं (भले ही उपयोगकर्ता सत्यापित नहीं करता)। शायद मैं user_signed_up सिग्नल का उपयोग कर रहा हूं, जिसने इसे काम किया है। –

+0

क्या आप अपना user_signed_up सिग्नल साझा कर सकते हैं? – milan

संबंधित मुद्दे