gpt4 book ai didi

Django send_mail() 在 shell 中工作,但不在 nginx 生产中工作

转载 作者:行者123 更新时间:2023-12-04 01:13:29 25 4
gpt4 key购买 nike

我想从 Django View 发送电子邮件。我让它在我的本地机器上使用 django 开发服务器使用以下设置工作:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'user@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587

我的观点有
from django.core.mail import send_mail

def my_view(request):
send_mail('subject','body','user@gmail.com',['recipient@gmail.com'],fail_silently=False)
return render(request, 'index.html')

当我从生产服务器上的 manage.py shell 运行 send_mail() 时,电子邮件已成功发送。但是,当在生产环境中调用 View (nginx + uwsgi + django)时,不会发送电子邮件,即使 View 运行没有错误并返回预期的响应。我在 error.log 中没有看到错误。

请帮助我为 nginx 设置正确的权限和配置,以使其正常工作。

注意:这个问题类似于 Send_mail in Django, works in shell, works locally, not in view ,一直没有解决。

编辑:当我做
sudo -u www-data python manage.py shell

以nginx用户运行,仍然可以成功发送邮件,这让我更加困惑。

最佳答案

如果电子邮件打印在控制台中,那么您可能已经设置

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

它打印电子邮件而不是发送它。

如果此行包含在替代(默认)设置文件中,那么您的部署设置可能会以某种方式使用它,而 shell 继续使用默认设置文件,其中后端设置为:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

或者根本不设置,在这种情况下,默认值是 smtp还有

关于Django send_mail() 在 shell 中工作,但不在 nginx 生产中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29711331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com