2013-06-04 70 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信號,該信號將具有參數中的userrequest。一旦收到,就會向用戶發送電子郵件。

把下面的代碼一些地方在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,'Hello <[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

相關問題