【发布时间】:2015-07-02 15:37:22
【问题描述】:
我正在使用 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'
【问题讨论】:
-
将
EMAIL_BACKEND更改为'django.core.mail.backends.console.EmailBackend',这样您就可以查看是否发送了电子邮件。如果已发送,则被 SES 阻止。 -
发送电子邮件不仅仅是将其从 SMTP 服务器中取出。我写了一些要记住的事情(DKIM、SPF、反弹处理、PTR 等)github.com/fmalina/emails。我在 FlatmateRooms 上将此代码与 allauth 一起使用,现在使其通用且可配置以将其全部开源。
-
我尝试使用另一个适配器,但没有运气。我将尝试在 django-allauth 代码中设置一些断点,看看发生了什么。 SES 还提到已发送 0 封电子邮件,所以我认为错误在我这边。我会及时通知您,感谢您的意见!
-
我想我找到了它的来源。提交 allauth SignupForm 时似乎不会简单地发送确认电子邮件。还有其他要添加的内容,我将查看视图并将其添加到我的视图中。似乎违反直觉,但至少我找到了它发生的原因。
标签: django django-allauth amazon-ses