![Ubuntu 18 使用 crontab 发送电子邮件](https://linux22.com/image/1186343/Ubuntu%2018%20%E4%BD%BF%E7%94%A8%20crontab%20%E5%8F%91%E9%80%81%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
因此:Ubuntu 18.04.6 Postfix:3.3.0 GNUmailutils 3.4
我有一个向 Office/Outlook 用户发送电子邮件的脚本。如果我从终端启动脚本,电子邮件会正确发送给用户。如果我在 crontab 上设置相同的脚本,电子邮件会发送给用户,但会由 MS 签名“收到此消息的某些人并不经常收到来自的电子邮件”,我该如何解决?
答案1
通过 运行的作业cron
不会在与桌面相同的运行时环境中运行。您的任何PATH
更改或其他环境变量设置都~/.bashrc
不会自动传播到您的cron
作业中。例如,没有$DISPLAY
,因此 GUI 程序需要特殊处理(阅读man xhost
)。
cron
人们可以在crontab
文件 Read中为所有作业设置环境变量man 5 crontab
。
echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
查看每个环境中的结果 。
由于command
该行的一部分crontab
默认由 解释/bin/sh
,其语法比 更简单/bin/bash
,因此我建议command
调用一个bash
脚本(可执行、已安装、以 开头#!/bin/bash
)来设置环境,然后调用所需的程序。