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。ただし、これはシェルが解釈できない誤った変数名なので、エラーを返しますbad substitution。これが問題のようです。

${zip_final.zip}次に置き換えると、zip_final.zipスクリプトが機能します。

関連情報