ajout du script d'envoi multiple
darcs-hash:20080910105343-bd074-aff83938c05cc257edd89e46c0212728296fe132.gz
This commit is contained in:
parent
a512ab5f33
commit
e0dc25f5c6
1 changed files with 75 additions and 0 deletions
75
gestion/mail-all.py
Executable file
75
gestion/mail-all.py
Executable file
|
@ -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()
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue