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