=== modified file 'Mailman/Handlers/CookHeaders.py' --- Mailman/Handlers/CookHeaders.py 2016-03-02 09:57:16 +0000 +++ Mailman/Handlers/CookHeaders.py 2016-11-20 19:56:22 +0000 @@ -154,12 +154,17 @@ realname = email # Remove domain from realname if it looks like an email address realname = re.sub(r'@([^ .]+\.)+[^ .]+$', '---', realname) - # RFC 2047 encode realname if necessary. - realname = str(uheader(mlist, realname)) + # Make a display name and RFC 2047 encode it if necessary. lrn = mlist.real_name + # realname might already be RFC 2047 encoded. + realname, cs = ch_oneline(realname) + lcs = Utils.GetCharSet(mlist.preferred_language) + if cs != 'us-ascii' and cs != lcs: + realname = realname.decode(cs, errors='replace').encode(lcs, + errors='replace') + dn = str(uheader(mlist, _('%(realname)s via %(lrn)s'))) change_header('From', - formataddr((_('%(realname)s via %(lrn)s'), - mlist.GetListEmail())), + formataddr((dn, mlist.GetListEmail())), mlist, msg, msgdata) else: # Use this as a flag