django rest auth 电子邮件验证

django rest auth email validation

有人可以解释一下如何为 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 控制台中没有错误。有什么想法吗?

Solution for this point:

site-packages\allauth\templates\account\email files must be copied in your-app\templates\account\email

如果你想发送真正的电子邮件,你需要有一个 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'

从那里开始尝试。如果没有帮助,我会尽力提供进一步的帮助。

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

以下是我在 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