Python Django mailer-自动发送在本地不工作(可能是:错误的localhost crontab路径?)

Python Django mailer-自动发送在本地不工作(可能是:错误的localhost crontab路径?),python,django,cron,django-mailer,Python,Django,Cron,Django Mailer,我是django的新手,我已经安装了。当我手动发送排队邮件时,它工作:(venv)$python manage.py send_mail,但当我设置crontab(这是我第一次使用cron作业)时,它不工作。我想这条路可能有一些错误 django mailer的官方文件建议: ***(/path/to/your/python/path/to/your/manage.py send\u mail>>~/cron\u mail.log 2>&1) 地雷: #首先我尝试: ****(/usr/bin/

我是django的新手,我已经安装了。当我手动发送排队邮件时,它工作:
(venv)$python manage.py send_mail
,但当我设置crontab(这是我第一次使用cron作业)时,它不工作。我想这条路可能有一些错误

django mailer的官方文件建议:
***(/path/to/your/python/path/to/your/manage.py send\u mail>>~/cron\u mail.log 2>&1)

地雷:

#首先我尝试:
****(/usr/bin/python3/Users/username/Documents/GitHub/projectname/manage.py send\u mail>>~/cron\u mail.log 2>&1)
#然后我试着:
****(/Users/username/Documents/GitHub/projectname/venv/bin/python/Users/username/Documents/GitHub/projectname/manage.py send\u mail>~/cron\u mail.log 2>&1)
#还包括:
*****cd/Users/username/Documents/GitHub/projectname;venv/bin/python manage.py发送邮件
#我也尝试过罗密欧的解决方案
没有人在工作。。救命啊

但是,当我在bash中使用完全相同的命令时,它可以工作:

$cd/Users/username/Documents/GitHub/projectname
$venv/bin/python manage.py发送邮件
这确实有效!我完全糊涂了


关于django mailer的注:我手动向2个电子邮件地址发送了4封排队的电子邮件,但有2封丢失了,从未发送过(也没有在垃圾邮件中丢失)。这正常吗?

您可以尝试更改代码所在的目录,然后运行它:

* * * * * cd /Users/username/Documents/GitHub/projectname; /usr/bin/python3 manage.py send_mail >>  /Users/username/cron_mail.log 2>&1
在cron中使用绝对路径也更好。并将其添加到脚本中,然后导入环境变量:

#!/bin/bash
source /Users/username/.bash_profile #or .bashrc
cd /Users/username/Documents/GitHub/projectname
venv/bin/python manage.py send_mail >>  /Users/username/cron_mail.log 2>&1
然后使脚本可执行:

chmod +rx script.sh
并将其添加到cron中:

* * * * * /path/to/script.sh

您的cron作业是否有任何错误或输出?没有任何错误。。。至少据我所知,我还没有看到任何消息。谢谢你的回复。我两个都试过了,但都没用。在您的第一个解决方案中,在更改到目录后,我应该在虚拟环境中使用python吗?还是全局python?因为我在bash中尝试了
venv/bin/python manage.py send\u mail
可以工作,但是,我在crontab中重复了完全相同的代码,它不能工作。这是我在bash中尝试的:
***cd/Users/username/Documents/GitHub/projectname;venv/bin/python manage.py send_mail
@DL8使用脚本和.bash_配置文件(或.bashrc)的源代码。将用你的命令编辑我的答案谢谢你的更新,但是,它仍然不起作用。。。我什么都试过了。不知道该去哪里wrong@DL8,我在获取配置文件时忘记了一个
/
。你能再试一次吗。。。仍然不起作用。当您说
chmod+rw script.sh
时,此命令使
script.sh
可执行,这是否意味着运行此命令后,
script.sh
文件将能够作为bash中的命令运行?我希望不会,因为当我直接运行这个文件时,它会说找不到命令