使用Django-registration发送激活邮件

8

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


请勿通过电子邮件发送用户密码。 - Aaron McMillin
4个回答

10

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

send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email])

如果您想要发送邮件,您需要在settings.py中指定DEFAULT_FROM_EMAIL的值。

此外,请注意以下内容:

使用EMAIL_HOST和EMAIL_PORT设置指定的SMTP主机和端口发送邮件。如果设置了EMAIL_HOST_USER和EMAIL_HOST_PASSWORD,则用于对SMTP服务器进行身份验证,并且EMAIL_USE_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'

django-registration 应该能够发送电子邮件。


6
仅供参考,如果有其他人设置电子邮件,请不要像我一样犯错误,在端口号周围使用引号,例如EMAIL_PORT='587'。这让我调试了几个小时... - John C
感谢您的提示,我仔细检查了我的错误电子邮件配置 - 发现在使用Gmail帐户设置它后的4行,我将其设置为一些无意义的本地主机帐户!问题?解决了。 - bharal
2
我认为当EMAIL_USE_TLS = True时,我们必须使用EMAIL_PORT = 587 - Amit Yadav

3

EMAIL_PORT = 465在一些年前是可行的。现在你需要使用端口587与gmail进行通信。 原因:Django从一开始就不支持SMTP SSL。只有在建立明文连接之后才支持STARTTLS命令。然而,Gmail不再支持在端口465上使用此选项。


2
希望这能帮助到某些人。在排除问题半小时后,我意识到在使用django-registration时还必须显式地声明以下内容 -
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'

0

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

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

希望这个答案能够帮到您。如果您有进一步的问题,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接