无法通过 crontab 发送外部电子邮件

无法通过 crontab 发送外部电子邮件

我正在尝试从 crontab 发送电子邮件。我尝试让 crontab 运行一个基本的 shell 脚本,并在 crontab 中指定实际命令。我尝试使用 mpack 和 ssmtp 执行此操作。我注意到,如果我在终端中执行命令或 shell 脚本,它会正常工作。只有当我尝试安排它时它才会失败。

这是我需要运行的命令的基本内容,我发送电子邮件[电子邮件保护]文件的内容。该文件每日生成,以年、月、日命名。

echo -e "to: [email protected]\nsubject: abc123\n" | ssmtp [email protected] < `date +%y%m%d`.txt

与 mpack 类似

mpack -s "abc123" `date +%y%m%d`.txt [email protected]

我发现它与日期变量有关。如果我用文件的实际名称替换它,那么一切都会正常。我已确保转义 % 符号,并尝试用 $(date +%y%m%d) 替换反引号,但没有成功。

Crontab 看起来像这样

10 10 * * * /home/user/./script.sh

也尝试过这个方法

10 10 * * * echo -e "to: [email protected]\nsubject: abc123\n" | ssmtp [email protected] < `date +\%y\%m\%d`.txt

我已确保 shell 脚本包含 #!/bin/sh,检查了所有文件权限,并更改了环境路径以包含 ssmtp 和 mpack 的目录。

有什么建议可以解释为什么日期变量会导致此操作失败吗?我还需要转义其他内容吗?

谢谢

答案1

我认为您应该指定二进制文件和文件的完整路径。

script.sh看起来应该是这样的:

#!/bin/sh    
/path/to/echo -e "to: [email protected]\nsubject: abc123\n" | /path/to/ssmtp [email protected] < /path/to/`date +%y%m%d`.txt

那么你的 Crontab 应该是这样的:

10 10 * * * /home/user/script.sh

(假设你的脚本有 x 位chmod +x

相关内容