67 lines
2 KiB
Bash
Executable file
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é."
|