【发布时间】:2011-02-23 02:24:58
【问题描述】:
我很好奇是否有办法使用 django-registration 发送带有用户名、密码的激活电子邮件。首先我想修改注册表,但我需要一些例子。
【问题讨论】:
-
不要在电子邮件中发送用户密码。
标签: python django django-registration
我很好奇是否有办法使用 django-registration 发送带有用户名、密码的激活电子邮件。首先我想修改注册表,但我需要一些例子。
【问题讨论】:
标签: python django django-registration
django-registration 在内部使用以下代码来处理发送电子邮件:
send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email])
如果你想工作,你必须在你的 settings.py 中指定值 DEFAULT_FROM_EMAIL。
另外,请注意以下几点:
邮件使用 SMTP 主机发送,并且 EMAIL_HOST 中指定的端口和 EMAIL_PORT 设置。这 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 应该可以发送电子邮件了。
【讨论】:
EMAIL_PORT='587' .这花了我几个小时的调试时间......
EMAIL_USE_TLS = True时使用EMAIL_PORT = 587
EMAIL_PORT = 465 是在几年前工作的。现在您需要将 587 端口与 gmail 一起使用。 原因:Django 从一开始就不支持带有 SSL 的 SMTP。设置纯文本连接后,仅支持 STARTTLS 命令。但是,Gmail 在端口 465 上不再支持此选项。
【讨论】:
希望这会对某人有所帮助。排查了半个小时后,我意识到我在使用 django-registration 时也必须明确说明这一点-
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
【讨论】:
django-register-activate 实现了与 django-registration 类似的功能。基本上它为用户注册、电子邮件验证和激活、用户登录和用户注销提供代码。
如果您需要示例来实现自己的代码,您可以查看register_activate 中的views.py 和forms.py 以获得一些提示。
希望答案有所帮助。如果您还有其他问题,请告诉我。
【讨论】: