변수를 사용하여 이메일 제목을 설정하고 이메일 본문에 첨부 파일이 포함되지 않도록 하는 방법

변수를 사용하여 이메일 제목을 설정하고 이메일 본문에 첨부 파일이 포함되지 않도록 하는 방법

다음 쉘 스크립트 조각이 있습니다.

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이 포함되어 첨부 파일의 내용을 이메일 본문에 배치합니다. 내가 아는 한 문제를 일으키는 것은 실제 $ 기호입니다. 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 파일에 넣을 수 있습니다.

감사합니다

관련 정보