scripts/mailcrans.sh
pauget b5fe4034a5 On utilise la base LDAP
darcs-hash:20041004153913-41617-c63b939f0e4c7ddd90bdc637e058559007dcf9ae.gz
2004-10-04 17:39:13 +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
ldapsearch -LLL -x 'uid=*' uid | awk -F': ' '/^uid: / {print $2"@crans.org"}' >$EMAILS
# Construction du canevas du mail
echo "From: Crans <nobody@crans.org>"> $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é."