On structure correctement les emails envoyés pour y ajouter des PJ.

* Le message est multipart/mixed
 * Les variantes du texte sont contenues dans un multipart/alternative
 * Les PJ sont directement dans le multipart/mixed
This commit is contained in:
Pierre-Elliott Bécue 2015-06-26 00:58:06 +02:00
parent 3214dd0213
commit 2bbdfc7fc9

View file

@ -71,7 +71,8 @@ def submessage(payload, type, charset='utf-8'):
"""Renvois un sous message à mettre dans un message multipart""" """Renvois un sous message à mettre dans un message multipart"""
submsg = MIMEText('', type, charset) submsg = MIMEText('', type, charset)
del(submsg['Content-Transfer-Encoding']) del(submsg['Content-Transfer-Encoding'])
submsg['Content-Transfer-Encoding'] = '8bit' # submsg['Content-Transfer-Encoding'] = '8bit'
# submsg['Content-Disposition'] = 'inline'
submsg.set_payload(payload) submsg.set_payload(payload)
return submsg return submsg
@ -143,14 +144,15 @@ def generate(mail, params, lang=default_language, lang_fallback=default_language
else: else:
params['mailer'] = 'unknown file (%s)' % os.getlogin() params['mailer'] = 'unknown file (%s)' % os.getlogin()
msg = MIMEMultipart('alternative') msg = MIMEMultipart('mixed')
inline_msg = MIMEMultipart('alternative')
if os.path.isdir(template_path + mail): if os.path.isdir(template_path + mail):
for filename in [dir for dir in os.listdir(template_path + mail) if os.path.isdir(template_path + mail + '/' + dir)]: for filename in [dir for dir in os.listdir(template_path + mail) if os.path.isdir(template_path + mail + '/' + dir)]:
lang_tmp, mk, file = get_lang(mail, filename, lang, lang_fallback) lang_tmp, mk, file = get_lang(mail, filename, lang, lang_fallback)
if filename == 'body': if filename == 'body':
for part in body(mail, lang_tmp, lang_alt, mk, params, charset): for part in body(mail, lang_tmp, lang_alt, mk, params, charset):
msg.attach(part) inline_msg.attach(part)
else: else:
txt = templateEnv.get_template(file).render(params) txt = templateEnv.get_template(file).render(params)
if filename in ['From', 'To', 'Cc', 'Bcc']: if filename in ['From', 'To', 'Cc', 'Bcc']:
@ -158,6 +160,7 @@ def generate(mail, params, lang=default_language, lang_fallback=default_language
else: else:
msg[filename] = Header(txt.encode(charset), charset) msg[filename] = Header(txt.encode(charset), charset)
msg['Date'] = formatdate(localtime=True) msg['Date'] = formatdate(localtime=True)
msg.attach(inline_msg)
return msg return msg