【发布时间】:2015-06-25 00:29:56
【问题描述】:
我想从 django 视图发送电子邮件。我让它在我的本地机器上使用 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() 时,电子邮件已成功发送。但是,当在生产中调用视图时(nginx + uwsgi + django),不会发送电子邮件,即使视图运行时没有错误并返回预期的响应。我在 error.log 中没有看到任何错误。
请帮我为 nginx 设置正确的权限和配置,这样才能正常工作。
注意:这个问题类似于Send_mail in Django, works in shell, works locally, not in view,从未解决。
编辑:当我这样做时
sudo -u www-data python manage.py shell
以 nginx 用户运行,我仍然可以成功发送邮件,这让我更加困惑。
【问题讨论】:
-
在我的情况下,使用 python shell 时电子邮件已成功发送。因此,这不太可能是重复的。我猜是 nginx 权限或配置问题。
-
send_mail在视图中返回什么? -
请注意,您的本地环境设置是否与您的生产设置不同?如果是这样,请更新有差异的答案。
-
您是否尝试使用电子邮件消息Django Documentation?由于 send_mail 只是电子邮件消息的包装器,请尝试使用它。还要在发送命令中设置
fail_silently=False。如果一切都失败了,试试这个link