script de gnration des feuilles d'avertissement pour mail invalide

darcs-hash:20041022211627-72cb0-21513bcb114e287fe550d8a2b17643415cecb83a.gz
This commit is contained in:
salles 2004-10-22 23:16:27 +02:00
parent 15be9cc6fb
commit 0e616da811
4 changed files with 4226 additions and 0 deletions

3940
admin/logo.eps Normal file

File diff suppressed because it is too large Load diff

141
admin/mail_invalide.py Executable file
View file

@ -0,0 +1,141 @@
#!/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.pdf",time.localtime(time.time()))
# Fichiers temporaires à supprimer à la fin
mailtex = "mailtmp.tex"
barcode = "barcode.eps"
#os.system("touch %s" % pdf.replace('.pdf','.ps'))
# 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 ./mail$$$tmp.*")

View file

@ -0,0 +1,49 @@
\documentclass[11pt,a4paper,oneside]{article}
\usepackage{aeguill}
\usepackage{fancyhdr}
\usepackage{url}
\usepackage{vmargin}
\usepackage{ifthen}
\usepackage{pstricks}
\usepackage{multicol}
\usepackage{alltt}
\usepackage[dvips]{eso-pic,graphicx}
\usepackage[dvips]{color}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\newboolean{mailcrans}
\setpapersize{A4}
\setmarginsrb{18mm}{14mm}{18mm}{14mm}{\headheight}{12pt}{\footheight}{20pt}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0.8pt}
\renewcommand{\footrulewidth}{0.2pt}
\lhead{\textbf{Notification d'adresse mail invalide}}
\rhead{\textbf{CR@NS}}
\cfoot{\textbf{CR@NS}}
%Define snow flakes
\newcommand{\flakepart}{%
\pspolygon(0,0)(0.5,1)(0.5,3)(1.9,4.4)(1.2,5.1)(0.5,4.4)(0.5,5.7)(-0.5,5.7)(-0.5,4.4)(-1.2,5.1)(-1.9,4.4)(-0.5,3)(-0.5,1)}
\newcommand{\snowflake}[1]{%
\psset{unit=#1}%
\multips{0}(0,0){1}{\flakepart}%
\multips{60}(0,0){1}{\flakepart}%
\multips{120}(0,0){1}{\flakepart}%
\multips{180}(0,0){1}{\flakepart}%
\multips{240}(0,0){1}{\flakepart}%
\multips{300}(0,0){1}{\flakepart}%
}
\newcommand{\multiflake}{%
\rput(0.0 ,1.6){\snowflake{0.06}}%
\rput(0.2 ,0.0){\snowflake{0.06}}%
\rput(0.5 ,0.6){\snowflake{0.04}}%
\rput(0.1 ,1 ){\snowflake{0.04}}%
\rput(0.8 ,1.4){\snowflake{0.06}}%
}
\begin{document}

View file

@ -0,0 +1,96 @@
{\setlength{\unitlength}{1in}
\begin{picture}(0,0)
\put(-0.3,-2.3){\includegraphics[width=3cm]{/usr/scripts/admin/logo.eps}}
\put(6,-3){\resizebox{1cm}{7cm}{\rotatebox{90}{\includegraphics[width=7cm]{/usr/scripts/admin/barcode.eps}}}}
\psset{linecolor=lightgray}
\put(-0.4,-0.6){\multiflake}
\end{picture}}
\begin{center}
\begin{minipage}[c]{0.9\textwidth}
\begin{center}
\begin{tabular}[c]{c}
\hline
\vspace{0.1cm} \\
\Huge{\textbf{Notification d'adresse mail}} \\
\Huge{\textbf{invalide}}\\
\vspace{0.1cm} \\
\hline
\end{tabular}
\end{center}
\end{minipage}
\end{center}
\vspace{0.2cm}
\begin{center}
\begin{minipage}{0.5\textwidth}
\textbf{Nom} \dotfill{} \nom \\
\textbf{Prénom} \dotfill{} \prenom \\
\textbf{Chambre} \dotfill{} \chambre \\
\textbf{Email} \dotfill{} \email \\
\end{minipage}
\end{center}
\vspace{0.5cm}
\noindent\begin{center}
\noindent\fcolorbox[gray]{0}{0.85}{%
\begin{minipage}[t]{0.7\textwidth}%
\begin{center}
\large Nous t'informons que l'adresse mail que tu as fournie lors de
ton adhésion est invalide au jour d'aujourd'hui.
\end{center}
\end{minipage}}
\end{center}
\vspace{0.8cm}
Un mail a été envoyé à l'adresse mail que nous connaissons, à savoir :
\email\ et un message nous est revenu. Donc le message ne t'a pas été
délivré.
\vspace{0.3cm}
Dans le cadre du fonctionnement de l'association, il est nécessaire
de pouvoir joindre les adhérents par mail afin d'obtenir des réponses
rapides que peuvent se poser les membres actifs quand à ton utilisation du
réseau. D'autre part un mail est un moyen simple et rapide pour te
communiquer des informations sur l'association quand le besoin s'en fait
sentir.
\vspace{0.3cm}
Plusieurs raisons peuvent expliquer des dysfonctionnements dans la réception
du mail. On peut compter dans la liste :
\begin{itemize}
\item L'adresse email n'existe pas
\item La boîte aux lettres de destination est pleine donc le mail a été rejeté
\item Une erreur de recopie s'est produite au moment de ton inscription.
\end{itemize}
\vspace{0.3cm}
Pour corriger celà, il te faut nous indiquer une adresse mail pour laquelle
ce problème ne se posera plus.
Tu peux venir à la Kfet pour rencontrer un des nombreux membres actifs en
permanence ou bien en envoyant un mail à \emph{respbats@crans.org}.
\vspace{0.2cm}
Une fois la correction apportée, il te faut la signaler au Conseil
d'Administration par envoi d'un mail à \emph{ca@crans.org}.
\vspace{1cm}
\noindent\begin{center}
\noindent\fcolorbox[gray]{0}{0.85}{%
\begin{minipage}[t]{0.7\textwidth}%
\begin{center}
\large Dans le cas où tu ne réagirais pas avant le \deconnexion, ta connexion
au réseau sera supprimé.
\end{center}
\end{minipage}}
\end{center}
\vspace{0.3cm}