Python 通过django注册发送激活电子邮件

Python 通过django注册发送激活电子邮件,python,django,django-registration,Python,Django,Django Registration,我很好奇是否有一种方法可以通过django注册发送带有用户名和密码的激活电子邮件。首先,我考虑修改注册表,但我需要一些示例。在内部使用以下代码来处理发送电子邮件: send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email]) 如果要工作,必须在settings.py中指定DEFAULT\u FROM\u EMAIL的值 此外,请注意以下事项: 邮件使用SMTP主机和 电子邮件\u主机中指定的端口,以及 电

我很好奇是否有一种方法可以通过django注册发送带有用户名和密码的激活电子邮件。首先,我考虑修改注册表,但我需要一些示例。

在内部使用以下代码来处理发送电子邮件:

send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email])
如果要工作,必须在settings.py中指定DEFAULT\u FROM\u EMAIL的值

此外,请注意以下事项:

邮件使用SMTP主机和 电子邮件\u主机中指定的端口,以及 电子邮件端口设置。这个 电子邮件\u主机\u用户和 电子邮件\u主机\u密码设置,如果设置, 用于对SMTP进行身份验证 服务器和电子邮件\u使用\u TLS设置 控制是否建立安全连接 使用

举个例子,我在settings.py文件中使用了以下内容来使用gmail帐户:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_USE_TLS = True

EMAIL_HOST_USER = 'my@gmail.com'
EMAIL_HOST_PASSWORD = 'my_emails_password'

然后应该能够发送电子邮件。

电子邮件端口=465在几年前就开始工作了。现在你需要在gmail上使用587端口。
原因:Django从一开始就不支持带有SSL的SMTP。设置纯文本连接后,仅支持STARTTLS命令。然而,Gmail在端口465上不再支持此选项。

希望这会对其他人有所帮助。经过半个小时的故障排除,我意识到在使用django注册时也必须明确说明这一点-

EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'

实现了与django注册类似的功能。基本上,它为用户注册、电子邮件验证和激活、用户登录和用户注销提供代码

如果您需要示例来实现自己的代码,可以在中查看views.py和forms.py以获得一些提示


希望答案有帮助。如果您还有其他问题,请告诉我。

并且,为了记录在案,请告诉其他设置电子邮件的人-不要犯我犯的错误,在端口周围使用引号,如
电子邮件\u port='587'
。这花费了我几个小时的调试时间…多亏了你的提示,我仔细检查了我错误的电子邮件配置-结果发现在使用gmail帐户设置了4行之后,我已经为一些毫无意义的本地主机帐户设置了它!问题解决了。我想我们必须使用
EMAIL\u PORT=587
EMAIL\u use\u TLS=True
不在电子邮件中发送用户密码时。