Django-mailer - 自动发送在本地不起作用(也许:本地主机 crontab 路径错误?)

Django-mailer - autosend not working locally (maybe: bad localhost crontab path?)

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

django-mailer官方文档建议:
* * * * * (/path/to/your/python /path/to/your/manage.py send_mail >> ~/cron_mail.log 2>&1)

我的:

# first I tried:
* * * * * (/usr/bin/python3 /Users/username/Documents/GitHub/projectname/manage.py send_mail >> ~/cron_mail.log 2>&1)

# then I tried:
* * * * * (/Users/username/Documents/GitHub/projectname/venv/bin/python /Users/username/Documents/GitHub/projectname/manage.py send_mail >> ~/cron_mail.log 2>&1)

# also this:
* * * * * cd /Users/username/Documents/GitHub/projectname; venv/bin/python manage.py send_mail

# I've tried Romeo's solution as well

None 正在工作.. 请帮忙!

然而,当我在 bash 中使用完全相同的命令时,它起作用了:

$ cd /Users/username/Documents/GitHub/projectname
$ venv/bin/python manage.py send_mail

这确实有效!我完全糊涂了...

PS。关于 django-mailer:我手动将 4 封排队的电子邮件分别发送到 2 个电子邮件地址,但是,有 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