이메일을 보낼 때 파일, 즉 find 명령의 결과 집합을 첨부합니다.

이메일을 보낼 때 파일, 즉 find 명령의 결과 집합을 첨부합니다.

find명령을 사용하여 여러 파일을 얻었습니다. 이제 이 모든 파일을 이메일 첨부 파일로 추가하고 싶습니다. 이러한 파일을 단일 메시지에 첨부 파일로 추가하려면 어떻게 해야 합니까?

이것을 스크립트로 구현하고 싶습니다. for 루프를 사용하고 파일을 배열 변수에 저장해야 합니까?

예: 결과적으로 3개의 파일을 얻었습니다.

find . -type f -name "sum*"

결과:

sum123.pdf
sum234.pdf
sum453.pdf

답변1

mutt다음을 수행할 수 있습니다.

mutt -a $(find . -type f -name "sum*")

비대화식으로 수행하려면 다음을 시도하십시오.

mutt -s "Subject" -a $(find . -type f -name "sum*") -- [email protected] < /dev/null

설치되지 않은 경우 mutt,여기mail더 많은 도구가 포함된 예입니다(예 mpack: )!

그래서 이렇게되어야합니다

#!/bin/bash
# This needs heirloom-mailx
from="[email protected]"
to="[email protected]"
subject="Some fancy title"
body="This is the body of our email"

declare -a attargs
for att in $(find . -type f -name "sum*"); do
  attargs+=( "-a"  "$att" )  
done

mail -s "$subject" -r "$from" "${attargs[@]}" "$to" <<< "$body"

선언되지 않은 sh 환경의 경우:

#!/bin/sh
# This needs heirloom-mailx
from="[email protected]"
to="[email protected]"
subject="Some fancy title"
body="This is the body of our email"

attargs=""
for att in $(find . -type f -name "sum*"); do
  attargs="${attargs}-a $att "  
done
attargs=${attargs::-1}

mail -s "$subject" -r "$from" ${attargs[@]} "$to" <<< "$body"

답변2

ATTACH_FILE=`ls $HOME/data/*log.txt`
rmdat $HOME/file.dat
rmdat $HOME/sendemail.dat
ATTACH_FILE="$(echo $ATTACH_FILE | sed 's/ /\\n/g')"
export FILE=$HOME/file.dat
export FILE1=$HOME/sendemail.dat
echo $ATTACH_FILE >> $FILE
ATT_FILES=""
while read BP_fl
do

ATT_FILES=$ATT_FILES" uuencode  $BP_fl $(basename $BP_fl) ;"

done < $HOM/file.dat

echo '( echo "Hi" ; ' >> $FILE1
echo   $ATT_FILES >> $FILE1 
echo ') | mailx -m -s " automation test email" [email protected] ' >> $FILE1

chmod 777 $FILE1
. $FILE1

관련 정보