scripts/mailcrans.sh
sabban c9083dfd86 qqs modifs.
C'est plus beauc comme a.
M@nu.

darcs-hash:20040824210809-1d643-3142bbc2322fd9711415f61df3e3df50b5559a91.gz
2004-08-24 23:08:09 +02:00

67 lines
2 KiB
Bash
Executable file

#! /bin/sh
# The author of this code is Manuel Sabban <manu@feyd-rautha.org>
#
# 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
cat /etc/passwd |grep -v corbeau | awk -F":" '{if ($3>499) print $1"@crans.org"}'>$EMAILS
# Construction du canevas du mail
echo "From: nounou <nounou@crans.org>"> $CANEVAS
# Edition du mail
echo -n "Subject: " >> $CANEVAS
${EDITOR:-"vi"} $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é."