Fixed recipient name decoding

Use decode_headers to decode the recipient name (otherwise it will display something like
=?utf-8?Q?Max_Muster?=)
This commit is contained in:
h44z 2017-06-16 10:44:33 +00:00
parent 1dd676f0aa
commit 2e1aaf6feb

View File

@ -6,6 +6,7 @@
import MAPI
import email
from email.utils import getaddresses
from email.header import decode_header
from MAPI.Util import *
from plugintemplates import *
@ -15,6 +16,14 @@ class RewriteGALAddressesToSMTP(IMapiDAgentPlugin):
def __init__(self, logger):
IMapiDAgentPlugin.__init__(self, logger)
def DecodeHeaderToUTF8(self, header):
decodedHeader = decode_header(header)
headerText, headerEncoding = decodedHeader[0]
if headerEncoding is None:
return unicode(headerText)
else:
return unicode(headerText, headerEncoding, 'ignore')
def PreDelivery(self, session, addrbook, store, folder, message):
headers = message.GetProps([PR_TRANSPORT_MESSAGE_HEADERS], 0)[0].Value
msg = email.message_from_string(headers)
@ -25,7 +34,7 @@ class RewriteGALAddressesToSMTP(IMapiDAgentPlugin):
for addr in to_addrs:
names.append([
SPropValue(PR_RECIPIENT_TYPE, MAPI_TO),
SPropValue(PR_DISPLAY_NAME_W, unicode(addr[0])),
SPropValue(PR_DISPLAY_NAME_W, self.DecodeHeaderToUTF8(addr[0])),
SPropValue(PR_ADDRTYPE, 'SMTP'),
SPropValue(PR_EMAIL_ADDRESS, unicode(addr[1])),
])
@ -33,7 +42,7 @@ class RewriteGALAddressesToSMTP(IMapiDAgentPlugin):
for addr in cc_addrs:
names.append([
SPropValue(PR_RECIPIENT_TYPE, MAPI_CC),
SPropValue(PR_DISPLAY_NAME_W, unicode(addr[0])),
SPropValue(PR_DISPLAY_NAME_W, self.DecodeHeaderToUTF8(addr[0])),
SPropValue(PR_ADDRTYPE, 'SMTP'),
SPropValue(PR_EMAIL_ADDRESS, unicode(addr[1])),
])