MAILX 发送一封电子邮件,但主题和正文为空

MAILX 发送一封电子邮件,但主题和正文为空

以下命令刚刚开始发送一封主题和正文为空白的电子邮件。

mailx -s "Daily Extract" $RESULT_EMAIL < $LOG

$RESULT_EMAIL- 包含已确认的通讯组列表。

$LOG- 包含已确认的电子邮件内容。

知道为什么电子邮件现在是空白的,没有主题行吗?

这是在已完成正常修补的 PROD 服务器上。也许是 Java 版本?红帽服务器版本? mailx 不适用于 XXX 版本?

$LOG- 包含电子邮件的文本。喜欢...This is the body of the Email. The email verifies that you have subscribed to us...

新信息 使用服务器上的命令行,mailx 函数确实会发送电子邮件。

shell 脚本是从 Atomic Sc​​heduler (UC4) 执行的。因此,UC4 计划在上午 6:00 执行 shell 脚本。 mailx 命令位于此 shell 脚本内。

我将努力获取您所要求的信息。

cat /etc/os-release

[ CAT 命令的结果可在此处找到]

lsb_release -a
Command not found

答案1

当您运行命令并使用<后跟某个字符串时,shell 将使用该字符串作为文件的名称,该文件的内容将被重定向到命令的标准输入流中。

换句话说,当你跑步时

mailx -s 'Daily Extract' "$RESULT_EMAIL" <"$LOG"

...那么变量中的任何内容LOG都将被用作文件名。如果该文件不存在,则发送的邮件将不带消息正文(如果手动运行该命令,您还应该在终端中看到“没有此类文件或目录”错误消息)。

然而,里面的内容似乎LOG是您要发送的消息正文。在这种情况下,我们不能使用这样的重定向,而必须确保变量的值$LOG被传递到 的标准输入流中mailx

我们可以像这样使用printf

printf '%s\n' "$LOG" | mailx -s 'Daily Extract' "$RESULT_EMAIL"

或者,使用此处字符串(某些 shell 支持):

mailx -s 'Daily Extract' "$RESULT_EMAIL" <<<"$LOG"

或者,使用此处文档重定向:

mailx -s 'Daily Extract' "$RESULT_EMAIL" <<END_MESSAGE
$LOG
END_MESSAGE

相关内容