Al usar find
el comando obtuve varios archivos. Ahora quiero agregar todos estos archivos como archivos adjuntos de correo. ¿Cómo agrego estos archivos como archivos adjuntos en un solo correo?
Quiero implementar esto en script. ¿Necesito usar un bucle for y almacenar los archivos en variables de matriz?
EX: Obtuve resultados de 3 archivos de la siguiente manera
find . -type f -name "sum*"
resultado:
sum123.pdf
sum234.pdf
sum453.pdf
Respuesta1
Puedes hacerlo mutt
así:
mutt -a $(find . -type f -name "sum*")
Si quieres hacerlo de forma no interactiva, prueba
mutt -s "Subject" -a $(find . -type f -name "sum*") -- [email protected] < /dev/null
Si mutt
no está instalado,aquí¡Es un ejemplo con mail
y más herramientas (por ejemplo mpack
)!
Entonces debería ser algo como
#!/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"
Para un entorno sh sin declarar:
#!/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"
Respuesta2
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