通过mailx命令发送Zip文件

通过mailx命令发送Zip文件

我有一个名为:zip_final.zip 的 zip 文件

我必须将此文件作为附件附加并发送邮件。

另外,我必须在邮件正文中显示 zip 文件中存在的所有文件名。

我有这个代码:

export files_list=`unzip -Zl zip_final.zip`

mailx -a ${zip_final.zip} -s "Files list | Zip file" << EOM

   Hi team, sent zip file.
   Files inside it are  :  $files_list

   Thank you.

EOM

但如果我这样做,邮件就不会发送。就像邮件命令甚至没有被调用/触发一样。我什至也没有收到任何错误消息。

有人可以建议如何使用 mailx 命令将该 zip 文件作为附件发送,并在邮件正文中显示 zip 文件内的所有文件名吗?

答案1

这是更正后的示例脚本:

#!/bin/bash
#<$1    : zip file name
#<$2 ...: recipients
file=$1
shift
(
echo "  Hi team, sent zip file."
echo "  Files inside it are  :"
unzip -l "$file"
echo "  Thank you."
) |
mailx -A "$file" -s "Files list | Zip file" "$@"

你错过了什么:

  • mail -A被编码-a
    编辑:这取决于 mailx 实现
  • unzip -Z出乎意料
    编辑:它改变输出样式
  • 没有邮件收件人
  • ${zip_final.zip}没有意义

答案2

你可以尝试这样的事情:

export files_list=`unzip -Zl zip_final.zip`
uuencode zip_final.zip zip_final.zip |mailx  -s 'Files list | Zip file' << EOM

   Hi team, sent zip file.
   Files inside it are  :  $files_list

   Thank you.
EOM

uuencode命令会将二进制文件“转换”为 ASCII 并能够通过邮件发送

答案3

命令未执行的可能原因是您使用-a ${zip_final.zip}而不是仅使用-a zip_final.zip.

${zip_final.zip}意味着变量的值它被称作zip_final.zip。但这是 shell 无法解释的非法变量名,因此它会返回错误:bad substitution。这似乎是问题所在。

替换${zip_final.zip}zip_final.zip,您的脚本应该可以工作。

相关内容