#!/usr/bin/env python # -*- coding: iso-8859-15 -*- import sys,os,string,time,locale locale.setlocale(locale.LC_ALL,'') # Import de la base de données sys.path.append('/usr/scripts/gestion') from ldap_crans import crans_ldap db = crans_ldap() # Détermination de l'uid du cableur uid = os.getenv('SUDO_UID') if not uid : print "Impossible de déterminer l'utilisateur" sys.exit(1) cableur = db.search('uidNumber=%s' % os.getenv('SUDO_UID'),'w')['adherent'][0] os.chdir("/usr/scripts/admin/") # Nom des fichiers 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 %s\n\n" % cableur.Nom().encode('iso8859-1') 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)) data = db.search("mail=%s" % adresse) try : prenom = data['adherent'][0].prenom().encode('iso8859-15') nom = data['adherent'][0].nom().encode('iso8859-15') 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'] = "%s <%s>" % (cableur.Nom(), cableur.mail()) msg['To'] = "Cableurs " msg['Cc'] = "Disconnect Team " # 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(msg['From'], (msg['To'],msg['Cc']), msg.as_string()) s.close() print "Mail envoyé !" break if (r == "a" or r == "A"): print "Abandon" os.system("rm -f %s" % pdf) break os.system("rm -f %s %s" % (mailtex.replace(".tex",".*"),barcode))