我是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
没有工作。。救命!
然而,当我在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