12

如何向注册 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'

我错过了发送欢迎注册邮件的任何设置吗?还是我必须通过我的观点来传递它?似乎无法弄清楚这一点。任何帮助都会很棒。谢谢。

4

2 回答 2

26

不,没有这样的设置,但您可以收听user_signed_up信号,该信号将具有userand requestin 参数。收到后向用户发送电子邮件。

将以下代码放在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
于 2013-06-04T22:16:47.357 回答
7

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

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

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

如果所有这些都不能满足您的需求,那么您可以连接到user_signed_up信号并自己发送一封简单的欢迎邮件。

于 2013-06-05T06:07:22.733 回答