140 lines
4.4 KiB
Python
Executable file
140 lines
4.4 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- coding: iso-8859-15 -*-
|
|
|
|
import sys,os,string,time,locale
|
|
locale.setlocale(locale.LC_ALL,'')
|
|
|
|
sys.path.append('/usr/scripts/gestion')
|
|
from ldap_crans import crans_ldap
|
|
|
|
os.chdir("/usr/scripts/admin/")
|
|
|
|
headers = "mail_invalide_debut.tex"
|
|
texsrc = "mail_invalide_texte.tex"
|
|
pdf = time.strftime("mail_invalide-%d-%m-%Y_%Hh%M.pdf",time.localtime(time.time()))
|
|
|
|
# Fichiers temporaires à supprimer à la fin
|
|
mailtex = "mailtmp.tex"
|
|
barcode = "barcode.eps"
|
|
|
|
# Détection d'un manquement d'argument
|
|
if len(sys.argv) == 1 :
|
|
sys.exit("Erreur: aucune adresse mail fournie")
|
|
|
|
# On prend la liste des adresses mails données en argument
|
|
adresses = sys.argv
|
|
# On vire pour celà l'appel au script
|
|
adresses.pop(0)
|
|
|
|
if len(adresses) == 1 :
|
|
text = "Bonjour\n\n \
|
|
Voici la fiche d'avertissement à remettre à l'adhérent concerné pour\n \
|
|
l'informer que l'adresse mail qu'il a fourni n'est pas valide.\n\n \
|
|
Il faut donc imprimer la feuille et la mettre dans sa boîte aux\n \
|
|
lettres.\n\n"
|
|
else :
|
|
text = "Bonjour\n\n \
|
|
Voici les fiches d'avertissement à remettre aux adhérents concernés\n \
|
|
pour les informer que l'adresse mail qu'ils ont fourni n'est pas valide.\n\n \
|
|
Il faut donc imprimer les feuilles et les mettre dans les boîtes aux\n \
|
|
lettres correspondantes.\n\n"
|
|
text += "-- \nUn script exécuté par quelqu'un ...\n\n"
|
|
text += os.popen("/usr/games/fortune",'r').read()
|
|
|
|
os.system("cp %s %s" % (headers, mailtex))
|
|
file = open(mailtex,'r+')
|
|
file.read()
|
|
|
|
chbres = []
|
|
for adresse in adresses :
|
|
os.system("barcode -n -E -b %s%s -o %s" % (adresse,time.strftime("%Y%m%d-%H%M",time.localtime()),barcode))
|
|
db = crans_ldap()
|
|
data = db.search("mail=%s" % adresse)
|
|
try :
|
|
prenom = data['adherent'][0].prenom()
|
|
nom = data['adherent'][0].nom()
|
|
chbre = data['adherent'][0].chbre()
|
|
except :
|
|
sys.exit("Erreur : l'adresse < %s > n'a pas été trouvée dans la base" % adresse)
|
|
|
|
chbres.append(chbre)
|
|
date = time.strftime("%A %d %B %Y",time.localtime(time.time()+15*24*3600))
|
|
|
|
if adresse == adresses[0] :
|
|
file.write("\\newcommand{\prenom}{%s}\n" % prenom)
|
|
file.write("\\newcommand{\\nom}{%s}\n" % nom)
|
|
file.write("\\newcommand{\chambre}{%s}\n" % chbre)
|
|
file.write("\\newcommand{\email}{\url{%s}}\n" % adresse)
|
|
file.write("\\newcommand{\deconnexion}{%s}\n" % date)
|
|
|
|
else :
|
|
file.write("\\renewcommand{\prenom}{%s}\n" % prenom)
|
|
file.write("\\renewcommand{\\nom}{%s}\n" % nom)
|
|
file.write("\\renewcommand{\chambre}{%s}\n" % chbre)
|
|
file.write("\\renewcommand{\email}{\url{%s}}\n" % adresse)
|
|
file.write("\\renewcommand{\deconnexion}{%s}\n" % date)
|
|
|
|
tex_src = open(texsrc, 'r')
|
|
file.write(tex_src.read())
|
|
tex_src.close()
|
|
|
|
if adresse != adresses[len(adresses)-1] :
|
|
file.write('\\newpage')
|
|
else :
|
|
file.write('\end{document}')
|
|
|
|
file.close()
|
|
#os.system("latex %s" % mailtex)
|
|
os.system("latex %s 1> /dev/null" % mailtex)
|
|
os.system("dvips %s 2> /dev/null" % mailtex.replace('.tex','.dvi'))
|
|
os.system("ps2pdf %s %s" % (mailtex.replace('.tex','.ps'),pdf))
|
|
|
|
|
|
# Génération du mail avec la pièce jointe
|
|
import smtplib
|
|
|
|
# Here are the email pacakge modules we'll need
|
|
from email.MIMEBase import MIMEBase
|
|
from email.MIMEText import MIMEText
|
|
from email.MIMEMultipart import MIMEMultipart
|
|
from email.Encoders import encode_base64
|
|
|
|
msg = MIMEMultipart()
|
|
msg['Subject'] = "Fiche(s) d'avertissement de mail invalide - %s" % time.strftime("%d/%m/%Y",time.localtime(time.time()))
|
|
msg['From'] = "Bureau <bureau@crans.org>"
|
|
msg['To'] = "bureau@crans.org"
|
|
msg['Cc'] = "Disconnect Team <disconnect@crans.org>"
|
|
# msg.preamble = text
|
|
# Guarantees the message ends in a newline
|
|
# msg.epilogue = ''
|
|
|
|
fp = open(pdf, 'rb')
|
|
img = MIMEBase('application','pdf')
|
|
img.set_payload(fp.read())
|
|
fp.close()
|
|
encode_base64(img) # Ils auraient pu soigner...
|
|
img.add_header('Content-Disposition', 'attachment', filename=pdf)
|
|
msg.attach(img)
|
|
|
|
text = MIMEText(text, 'plain', 'iso-8859-1')
|
|
msg.attach(text)
|
|
|
|
while (1 == 1):
|
|
print "Mail formaté, prêt à l'envoi."
|
|
print " [Envoyer, Abandonner]"
|
|
r = sys.stdin.readline().strip()
|
|
if (r == "e" or r == "E"):
|
|
# Send the email via our own SMTP server.
|
|
s = smtplib.SMTP()
|
|
s.connect()
|
|
s.sendmail('bureau@crans.org',
|
|
('bureau@crans.org','disconnect@crans.org'),
|
|
msg.as_string())
|
|
s.close()
|
|
print "Mail envoyé !"
|
|
break
|
|
if (r == "a" or r == "A"):
|
|
print "Abandon"
|
|
break
|
|
|
|
os.system("rm -f %s %s" % (mailtex.replace(".tex",".*"),barcode))
|