diff --git a/product/ERP5Type/patches/CMFMailIn.py b/product/ERP5Type/patches/CMFMailIn.py index 9e2eebc5128798ec3a3383e63a0f052bb1fd07e8..d6b0bdb363ec8dc468267d7b348824c6268e8170 100644 --- a/product/ERP5Type/patches/CMFMailIn.py +++ b/product/ERP5Type/patches/CMFMailIn.py @@ -14,7 +14,7 @@ import mimetypes import email -from email.Header import decode_header +from email.Header import decode_header, make_header from email.Utils import parseaddr from ZODB.POSException import ConflictError from zLOG import LOG @@ -46,18 +46,15 @@ def MailInTool_postUTF8MailMessage(self, file=None): # Recode headers to UTF-8 if needed for key, value in msg.items(): decoded_value_list = decode_header(value) - new_value_list = [] - for x in decoded_value_list: - if x[1] != None: - new_value_list.append(unicode(x[0], x[1]).encode('utf-8')) - else: - new_value_list.append(x[0]) - new_value = ''.join(new_value_list) + unicode_value = make_header(decoded_value_list) + new_value = unicode_value.__unicode__().encode('utf-8') # msg.replace_header(key, new_value) theMail['headers'][key.lower()] = new_value # Filter mail - for header in ('to', 'from'): - theMail['headers'][header] = parseaddr(theMail['headers'][header])[1] + for header in ('resent-to', 'resent-from', 'resent-cc', 'resent-sender', 'to', 'from', 'cc', 'sender', 'reply-to'): + header_field = theMail['headers'].get(header) + if header_field: + theMail['headers'][header] = parseaddr(header_field)[1] # Get attachment body_found = 0 for part in msg.walk():