我们有一个在CentOS上运行的Django应用程序。 我们使用Django身份验证和表单为密码重置创建了一个新功能。
这适用于开发服务器,但是当我将其部署到生产环境时,不会发送具有唯一链接的邮件。 我已经确定了这个问题,即使用smtplib的Django试图通过端口25使用Postfix发送电子邮件,而不是使用指向Google服务器的settings.py.
当我关闭Postfix时,我在尝试重置密码时拒绝连接。
我们还有其他可用的邮件功能,只有重置密码不会。
我的settings.py:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'my-mail@gmail.com'
EMAIL_HOST_PASSWORD = 'my-pass'
DEFAULT_FROM_EMAIL = 'my-mail@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
SERVER_EMAIL = 'my-mail@gmail.com'
该视图来自auth_views.password_reset,我从主urls.py文件中调用它。
解决方案: 事实证明我有另一个settings.py文件位于项目的主目录中作为备份。 问题是我在apache / django.wsgi文件中添加了这个主目录,因此Django正在查看此文件而不是更新的文件。 一旦我删除了这个文件,一切正常。 谢谢你的帮助。
答案 0 :(得分:1)
解决方案:事实证明我在项目的主目录中有另一个settings.py文件作为备份。问题是我在apache / django.wsgi文件中添加了这个主目录,因此Django正在查看此文件而不是更新的文件。一旦我删除了这个文件,一切正常。谢谢你的帮助。
答案 1 :(得分:0)
我只是设置了以下设置:
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = 'myemailpwd'
并且,代码发送电子邮件没有任何中断
from django.core.mail import EmailMessage
email = EmailMessage('TEST TITLE', 'TEST BODY', to=[email])
email.send()
答案 2 :(得分:0)
尝试下面的代码并写下你遇到的错误。
在settings.py中
func findBookWithTitle(_ title:String, inListe liste:[Book]) -> Book? {
return liste.first(where: { $0.title == title })
}
在send_mail.py中
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'your email'
EMAIL_HOST_PASSWORD = 'your password'
EMAIL_PORT = 587