#
import sys
import email
+import email.charset
from email.header import decode_header
import smtplib
import re
DOC_PATTERN = r'^(.*:)?\s*(\S+)\s*/\s*(\d+)\s*$'
# format du nouveau nom de document (à partir du type et numéro)
DOC_FORMAT = 'CODA-%s-%08d.pdf'
+# réécriture des liens pour coda.auf
+BODY_PATTERN_1 = r'\n(http://coda.auf/)(.*)\n'
+BODY_FORMAT_1 = r'\n\nAccès depuis une implantation AUF :\n \1\2\n\nAccès depuis Internet :\n https://coda.auf.org/\2\n\n'
+# réécriture des liens pour form.coda.auf
+BODY_PATTERN_2 = r'\n(http://form.coda.auf/)(.*)\n'
+BODY_FORMAT_2 = r'\n\nAccès depuis une implantation AUF :\n \1\2\n\nAccès depuis Internet :\n https://form-coda.auf.org/\2\n\n'
# codes de sortie venant de <sysexits.h>
EX_TEMPFAIL = 75
# TRAITEMENTS
#--------------------------------------------------------------------------
+# par défaut les textes seront codés en Quoted-Printable
+qp_charset = email.charset.Charset('utf-8')
+qp_charset.header_encoding = email.charset.QP
+qp_charset.body_encoding = email.charset.QP
+
# 05. si le destinataire est noreply@auf.org, on le remplace par l'émetteur
# (ANNULÉ car ça ne devrait plus arriver)
# (REPRIS pour le cas où le destinataire est impression-coda@auf.org)
# parcours des différentes parties du courriel
for part in msg.walk():
+ # traitement du corps de message pour y remplacer :
+ # http://coda.auf/coda/…
+ # par :
+ # Accès depuis une implantation AUF : http://coda.auf/coda/…
+ # Accès depuis Internet : https://coda.auf.org/coda/…
+ if part.get_content_type() == 'text/plain':
+ text = part.get_payload(decode=True)
+ new_text = re.sub(BODY_PATTERN_1, BODY_FORMAT_1, text)
+ new_text = re.sub(BODY_PATTERN_2, BODY_FORMAT_2, new_text)
+ if new_text != text:
+ del part['Content-Transfer-Encoding']
+ part.set_payload(new_text, qp_charset)
+ continue
+ # traitement uniquement si c'est un attachement de PDF
if part.get_content_type() != 'application/pdf':
continue
# adaptation du nom de fichier dans le Content-Type