Envoi de mail avec pièces jointes multiples

Résolu/Fermé
volimp - 19 avril 2010 à 18:19
 volimp - 20 avril 2010 à 15:27
Bonjour tlm,

JE suis entrain de faire du nouveau du shell après 4 ans et je bloque sur une commande.

But de mon Script : envoyer un mail en attachant tous les fichiers csv contrenus dans un repertoire donné.


Code :
#preparing the send mails comand
for i in $(find $FILE_DIR | grep csv )
do
SENDC=" "uuencode" "$i" "$i" ; "$SENDC
done

#fixing the Subject of the mail
SUBJECT=$(basename $i)



#Sending the mail

FINAL_COMAND="( "$SENDC" ) | mail -s "$SUBJECT" "$TO

$FINAL_COMAND
echo $FINAL_COMAND
en lançant le script j'obtient cette erreur :

( uuencode /HDisclosure/files/POSITIONS.csv /home/HDisclosure/files/POSITIONS.csv ; uuencode /HDisclosure/files/POSITIONS1.csv /home/HDisclosure/files/POSITIONS1.csv ) | mail -s POSITIONS me@mail.com

./Hdc_sendMail.ksh[43]: (: introuvable.

je pense que ça provient du ";"

Lorsque je fais un copier coller de la commande dans le terminal ça envoi le mail par contre le script retourne l'erreur ci-dessus.

Merci pour votre aide.
A voir également:

1 réponse

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 20/04/2010 à 12:05
hello
en simplifiant
for i in $(find $FILE_DIR | grep csv ) 
do 
        uuencode $i $i 
done | mail -s "$(basename $i)" "$TO" 

ou
SENDC=""
for i in $(find $FILE_DIR | grep csv )
do
        SENDC="uuencode $i $i ; $SENDC"
done 

#fixing the Subject of the mail
SUBJECT=$(basename $i)

#Sending the mail

FINAL_COMAND="($SENDC )| mail -s \"$SUBJECT\" $TO"

echo $FINAL_COMAND
$FINAL_COMAND
0
j'ai cette erreur

' imprévu.Mail.ksh[19]: 0403-057 Erreur de syntaxe. ligne 21 : 'do


sinon je pense que la syntaxe pour utiliser uuencode est la suivante dans ce cas :

( uuencode file1 file1 ; uuencode file2 file2 ) | mail -s "$(basename $i)" "$TO"
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 avril 2010 à 12:15
- affiche les lignes avant et après 19
- la boucle for remplace les () et uuencode chaque fichier et pipe le tout dans le mail
0
le problème provenait d'un caractère non imprimable ^M :))

sinon je m'en sors avec une autre approche

for i in $(find $FILE_DIR | grep csv )
do
echo "handling the file " $(basename $i)
echo
uuencode $i $i >> PJ.tmp

done

mail -s "$(basename $i)" -c $CC $TO < PJ.tmp



Merci dubeck
0