#! /bin/sh # The author of this code is Manuel Sabban # # Copyright (c) 2002, 2004 Vincent Bernat, Manuel Sabban. # # Permission to use, copy, and modify this software with or without fee # is hereby granted, provided that this entire notice is included in # all source code copies of any software which is or includes a copy or # modification of this software. # # THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR # IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY # REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE # MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR # PURPOSE. # Envoie un mail à tous les adhérents ayant un compte sur zamok, c'est-à-dire # ceux qui ont une adresse mail en @crans.org # Emplacement temporaire de la liste d'adresses email EMAILS=/tmp/emails$$ # Fichier contenant les adresses vers lesquelles l'envoi n'a pas réussi FAILED=/tmp/failed$$ # Canevas du mail CANEVAS=/tmp/canevas$$ # En cas d'interruption du script, on efface les fichiers temporaires trap "rm -f $EMAILS $CANEVAS 2> /dev/null ; exit 5" 1 2 15 0 # Construction de la liste des adresses mails ldapsearch -LLL -x 'uid=*' uid | awk -F': ' '/^uid: / {print $2"@crans.org"}' >$EMAILS # Construction du canevas du mail echo "From: Crans "> $CANEVAS # Edition du mail echo -n "Subject: " >> $CANEVAS ${EDITOR:-"jed"} $CANEVAS echo >> $CANEVAS # Visualisation du mail cat $CANEVAS echo echo '--------------' echo 'Ce mail va être envoyé à tous les adhérents. Entrée pour continuer, Ctrl-C pour arrêter.' read # Envoi du mail à toutes les adresses comprises dans `EMAILS' # Les envois non réussis sont stockés dans $FAILED. rm -f $FAILED 2> /dev/null while read EMAIL do echo -n "Envoi à $EMAIL... " cat $CANEVAS | formail -I "To: $EMAIL" | sendmail $EMAIL || (echo -n "Pas " ; echo $MAIL >> FAILED) echo "OK" done < $EMAILS if [ -f $FAILED ]; then echo "Il y a eu des erreurs, voir $FAILED pour les adresses emails qui ont posé problème." fi echo "Terminé."