我正在使用Django-allauth并通过Amazon SES发送电子邮件。我希望所有帐户在他们登录之前验证他们的电子邮件,但电子邮件验证发送似乎无声地失败。我查看了源代码,在那里我看到我应该设置DEFAULT_FROM_EMAIL,但它仍然无法正常工作。
这是我的配置,以防我忘记任何明显的事情。我将django-smtp-ssl安装为电子邮件后端。非常感谢您的帮助!
# E-mail
EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
EMAIL_HOST = 'email-smtp.us-west-2.amazonaws.com'
EMAIL_HOST_USER = os.environ['EMAIL_USER']
EMAIL_HOST_PASSWORD = os.environ['EMAIL_PASSWORD']
EMAIL_PORT = 465
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'Verified-email <verified-ses-email@example.com>'
# Auth
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
SOCIALACCOUNT_EMAIL_VERIFICATION = True
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
答案 0 :(得分:1)
终于找到了我所缺少的东西。
在我的注册视图中,我又添加了一行:
from allauth.account.utils import complete_signup
from allauth.account import app_settings
# some other code
def signup(request):
if request.method == 'POST':
form = UserCreateForm(request.POST)
if form.is_valid():
user = form.save(request)
# Added this!
complete_signup(request, user,app_settings.EMAIL_VERIFICATION, "/")
# etc...
答案 1 :(得分:0)
DEFAULT_FROM_EMAIL
应该是EMAIL_HOST
上的有效地址。
您还可以验证如下。
$ python manage.py shell
Python 2.7.9 (default, Jun 29 2016, 13:08:31)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.conf import settings
>>> settings.EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
>>> from django.core.mail import send_mail
>>> send_mail('test message', 'this is a test message', settings.DEFAULT_FROM_EMAIL, ['recipient@example.com'])
1
>>>