我正在尝试使用 mailx and uuencode
在电子邮件正文中attach one file
并发送少量echo messages
。我有以下命令,我将它们加在一起,uuencode 无法正常工作,但我在电子邮件中正确收到回显消息。
如何让 uuencode 在这里工作?我猜在将 uuencode 与 mailx 相结合时我在这里做错了什么?
(uuencode /tmp/chart.html percentage_graph.html) | mailx -s "LIP Data Quality Report for $DATE_YEST_FORMAT1" -r rj@host.com rj@host.com <<EOF
Data Successfully loaded into LIP_DATA_QUALITY table
Total Items Purchased: `echo $QUERY1 | awk '{print $1}'`
Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`
Error Percentage: $QUERY2
EOF
但是出于测试目的,如果我发出以下命令以查看我是否在附件中获取任何 html 文件,那么我会收到一封带有附件的电子邮件。
(uuencode /tmp/chart.html percentage_graph.html) | mailx -s "LIP Data Quality Report for $DATE_YEST_FORMAT1" -r rj@host.com rj@host.com
那么当我将它们组合在一起时,我的第一个命令有什么问题?
mailx
命令可以从管道(uuencode)或heredoc(<<EOF)获取其输入。 但不能两者兼而有之。
这可能对您有用:
$ mailx -s "LIP Data Quality Report for $DATE_YEST_FORMAT1" -r rj@example.com rj@example.com <<EOF
Data Successfully loaded into LIP_DATA_QUALITY table
Total Items Purchased: `echo $QUERY1 | awk '{print $1}'`
Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`
Error Percentage: $QUERY2
$(uuencode /tmp/chart.html percentage_graph.html)
EOF
或者,考虑使用类似 mutt 的东西,它可以让你将文件与邮件正文分开附加。
> uuencode 不会读取 stdin,如果你像这里所做的那样给它一个输入文件名。 那是因为它对单个文件进行编码。 如果要对两个文件进行编码,则需要先以某种方式将它们组合在一起。 如果可以的话,您可以使用cat
:
cat /tmp/chart.html - | uuencode percentage_graph.html | mailx .... << EOF
..stuff to append to chart.html
EOF