From e0dc25f5c67de156379cef4c736d99c3529b2bb8 Mon Sep 17 00:00:00 2001 From: Antoine Durand-Gasselin Date: Wed, 10 Sep 2008 12:53:43 +0200 Subject: [PATCH] ajout du script d'envoi multiple darcs-hash:20080910105343-bd074-aff83938c05cc257edd89e46c0212728296fe132.gz --- gestion/mail-all.py | 75 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 gestion/mail-all.py diff --git a/gestion/mail-all.py b/gestion/mail-all.py new file mode 100755 index 00000000..d17dc1d2 --- /dev/null +++ b/gestion/mail-all.py @@ -0,0 +1,75 @@ +#! /usr/bin/env python +# -*- encoding: iso-8859-15 -*- +# Envoi d'un mail donné à certains adherents +# Premier parametre : critere de recherche +# Second parametre, fichier à envoyer + +import smtplib +import sys,os +import ldap_crans +import time +from email_tools import format_sender + +if __name__ == "__main__": + if len(sys.argv) != 3: + print """Usage: + +Ce script permet d'envoyer un mail à toute une catégorie d'adhérents. + +Le premier paramètre est le critère de recherche : + paiement=ok pour les adhérents en règle + paiement=ok&paiement!=2004 pour ceux qui n'ont pas encore payé pour cette année + chbre=????&paiement=ok pour ceux dont la chambre est inconnue + paiement=ok&carteEtudiant!=2004 pour ceux qui n'ont pas de carte d'étudiant + +Le second paramètre est un fichier texte qui contient le message à envoyer. Il +doit également contenir les entêtes, à l'exception du destinataire qui sera rajouté +par le script. + + /!\ Ce script ne demande aucune confirmation, il faut veiller à vérifier avec who + que l'on cible bien les utilisateurs que l'on veut. Et si on veut vérifier que + le mail a une bonne tête on se l'envoie d'abord en mettant login=machin + comme critère de recherche. +""" + + sys.exit(0) + + # On en est là + # On ouvre la base et on cherche + adherents = ldap_crans.crans_ldap().search(sys.argv[1])['adherent'] + + print "%d adhérent(s) a/ont été trouvé(s)..." % len(adherents) + time.sleep(3) # On dort un peu, ctrl-c welcome + + try: + texte = "".join(file(sys.argv[2], "r").readlines()) + except IOError: + print "Impossible d'ouvrir le fichier à envoyer, merci, au revoir." + sys.exit(1) + + echecs = [] + s = smtplib.SMTP() + s.connect('smtp.crans.org') + for adherent in adherents: + mail = adherent.mail().encode("iso-8859-15", "ignore") + if "@" not in mail: + mail = mail + "@crans.org" + print "Envoi du mail à %s <%s>..." % (adherent.Nom().encode("iso-8859-15","ignore"), mail) + try: + recipient = format_sender(u'"%s" <%s>\n' % (adherent.Nom(), mail)) + s.sendmail('bulk+%s@crans.org' % mail.replace("@",'-at-'), + (mail,), + "To: %s\n%s" % (recipient, texte)) + except: + print "Erreur lors de l'envoi à %s <%s>..." % (adherent.Nom().encode("iso-8859-15","ignore"), mail) + echecs.append(mail) + else: + # Tout va bien + pass + + if echecs: + print "\nIl y a eu des erreurs :" + print echecs + + s.close() +