Django没有发送邮件

时间:2017-05-29 11:36:20

标签: python django django-forms django-authentication

我们有一个在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正在查看此文件而不是更新的文件。 一旦我删除了这个文件,一切正常。 谢谢你的帮助。

3 个答案:

答案 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