次のシェルスクリプトフラグメントがあります。
var_name='ZZPCI'
for emailadd in `cat /tmp/email_list.tmp`
do
subject_text="Subject with Var Name "$var_name
subj_text_novar="Subject without Var Name"
email_mssge="this is the message with variable name "$var_name
echo "$email_mssge"|mailx -a /tmp/my_report.txt -s "$subject_text" "$emailadd"
echo "$email_mssge"|mailx -a /tmp/my_report.txt -s "$subj_text_novar" "$emailadd"
done
その機能は次のとおりです。 a. var_name変数を設定します。 b。 /tmp/email_list.tmpに保存されているメールアドレスのリストを読みます。 c。 /tmp/my_report.txt(通常のテキストファイル)を添付して電子メールをコンパイルして送信します。
このスクリプトはさまざまなサーバーで実行するように設計されているため、var_name はサーバーごとに変更されます。 $ subj_text_novar(タイトル文字列に$ var_nameなし)を使用するメールコマンドは、電子メールを正しく送信します。ただし、$ subject_textを含むmailコマンドには$ var_nameが含まれており、添付ファイルの内容をEメール本文に配置します。私が知っている限り、問題を引き起こすのは実際の$記号です。 var_nameの値を文字列にハードコードするのは問題ありませんが、var_nameは間違いなく接続文字列なので、理由はわかりません。それでは、どのように設定しますか? $ var_nameを含み、私のテキストファイルが添付ファイルとして送信されるようにメールの件名を設定しますか?
SuSE 11.3でソリューションを実行していますが、理想的にはソリューションはAIX 6.1およびHP UX11.31でも実行する必要があります。
挨拶
答え1
heirloom-mailxを使ってあなたに言うことがあります:
enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}
関数呼び出し:eviaremail smtp.mailserver:port from_address authuser 'pass' スペースで区切られた添付ファイルの宛先リスト
また、この機能を使用する前に、電子メールの$titulo(タイトル)と$cuerpo(本文)を外部で定義する必要があります。関数をスクリプト(mailsend.sh)としてパスに入れ、ソースを含むスクリプトで使用するか、.bashrcファイルに入れることができます。
ありがとう