django rest auth email validation

时间:2016-10-11 17:49:48

标签: django rest validation email django-rest-auth

有人可以解释如何为django rest auth设置电子邮件验证吗? 我的settings.py包含:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True   
ACCOUNT_USERNAME_REQUIRED = False

我在urls.py中添加了这一行:

url(r'^accounts/', include('allauth.urls')),

但是,当我注册此端点:rest-auth/registration/时,不会发送电子邮件,但会创建用户。 发送电子邮件确认的好配置是什么?我是否必须拥有SMTP服务器?

编辑:(在@McAbra评论之后)

显然,此设置无法发送电子邮件:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

它只在django控制台输出中打印邮件。 @McAbra给出的设置效果很好。 但是在生产环境中,使用gmail发送验证邮件是一种好习惯吗? 我是否只想创建noreply.myapp@gmail.com的电子邮件?

编辑2:

我的另一个问题是发送的邮件是空的。该模板显示在site-packages\allauth\templates\account\email中。电子邮件标题为[http://localhost:8000/],但没有内容。我在python控制台中没有错误。有什么想法吗?

  

解决这一点:

     必须复制

site-packages\allauth\templates\account\email个文件   在your-app\templates\account\email

2 个答案:

答案 0 :(得分:1)

如果要发送真实的电子邮件,则需要拥有SMTP服务器。我喜欢使用Gmail SMTP服务器。 settings.py将是:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'gmail_username'
EMAIL_HOST_PASSWORD = 'password from https://security.google.com/settings/security/apppasswords'

从那里试试。如果这没有用,我会尽力帮助。

答案 1 :(得分:1)

我在发送电子邮件时遇到问题,之后发送电子邮件中的链接。您需要明确设置帐户确认电子邮件视图。

以下是settings.py中的设置

 ACCOUNT_AUTHENTICATION_METHOD = 'email'
 ACCOUNT_EMAIL_REQUIRED = True   
 ACCOUNT_USERNAME_REQUIRED = False
 ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
在urls.py中

  from allauth.account.views import confirm_email as allauthemailconfirmation

  urlpatterns  = [
  url(r'^api/rest-auth/account-confirm-email/(?P<key>[-:\w]+)/$',allauthemailconfirmation,
    name='account_confirm_email'),
  ]

如果您想在本地查看电子邮件,可以使用mailcatcher.me