【问题标题】:django rest auth email validationdjango rest auth 电子邮件验证
【发布时间】:2017-02-20 08:44:38
【问题描述】:

有人可以解释如何为 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

【问题讨论】:

  • 只是为了确保:您不会期待真正的电子邮件,对吧?如果您使用您指定的EMAIL_BACKEND,您将在控制台中打印出一封“电子邮件”。
  • 我想设置一个通过电子邮件验证的注册。我正在寻找一种解决方案,将我的配置设置为向用户发送验证电子邮件,然后继续验证以激活用户帐户。
  • 好的,所以您确实在控制台中打印了一封电子邮件,但您想将实际电子邮件发送到真实邮箱?
  • 是的,就是这样。但我刚刚检查过,我的控制台中没有打印任何内容。我会更新我的帖子。
  • 哦...我认为这是 Django allauth 而不是“rest auth”。

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


【解决方案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'

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

【讨论】:

  • 您的解决方案有效,但我必须通过简单的 gmail 帐户密码更改 EMAIL_HOST_PASSWORD。这个网址:https://security.google.com/settings/security/apppasswords返回"The setting you are looking for is not available for your account."
  • 我已经用一个简短的问题编辑了我的帖子,也许你也可以在这一点上帮助我? :)
  • 有什么理由让它只在本地主机上运行而不在我的服务器上运行(使用相同的设置)?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2020-02-28
    • 2021-02-10
    • 2021-01-30
    • 2020-02-21
    • 2020-02-20
    • 1970-01-01
    相关资源
    最近更新 更多