Django-allauth:发送关于注册的欢迎电子邮件(未经验证)

时间:2013-06-04 22:04:08

标签: django django-allauth

如何向注册django应用程序的用户发送欢迎电子邮件(使用django-allauth)。如果我设置ACCOUNT_EMAIL_VERIFICATION = ("mandatory"),它可以正常工作,并且用户会收到验证电子邮件。但由于我不需要任何电子邮件验证,因此用户只需注册并收到欢迎电子邮件。

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'

是否有任何我错过的设置发送欢迎注册邮件?或者我必须通过我的观点传递它?似乎无法找到解决方法。任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

allauth确实只发送确认邮件。但是,它确实区分了第一个(注册)确认邮件和后续邮件(例如,当用户添加第二个电子邮件地址时)。

为此目的,allauth有一个“注册时的电子邮件确认”  模板(account/email/email_confirmation_signup_message.txtaccount/email/email_confirmation_signup_subject.txt)。

使用内置模板时,此混合确认/注册/欢迎邮件与常规电子邮件确认模板相同,但您可以覆盖它并将欢迎消息放在那里。此外,请将ACCOUNT_EMAIL_VERIFICATION设置为"optional"

如果所有这些都不符合您的需求,那么您可以联系user_signed_up信号并自行发送简单的欢迎邮件。