mercurial/mail.py
branchstable
changeset 43325 7d4f2e4899c5
parent 43324 866bd2cf764b
child 43326 ef81de93143e
equal deleted inserted replaced
43324:866bd2cf764b 43325:7d4f2e4899c5
   360 def headencode(ui, s, charsets=None, display=False):
   360 def headencode(ui, s, charsets=None, display=False):
   361     '''Returns RFC-2047 compliant header from given string.'''
   361     '''Returns RFC-2047 compliant header from given string.'''
   362     if not display:
   362     if not display:
   363         # split into words?
   363         # split into words?
   364         s, cs = _encode(ui, s, charsets)
   364         s, cs = _encode(ui, s, charsets)
   365         return str(email.header.Header(s, cs))
   365         return encoding.strtolocal(email.header.Header(s, cs).encode())
   366     return s
   366     return s
   367 
   367 
   368 
   368 
   369 def _addressencode(ui, name, addr, charsets=None):
   369 def _addressencode(ui, name, addr, charsets=None):
   370     assert isinstance(addr, bytes)
   370     assert isinstance(addr, bytes)
   371     name = headencode(ui, name, charsets)
   371     name = encoding.strfromlocal(headencode(ui, name, charsets))
   372     try:
   372     try:
   373         acc, dom = addr.split(b'@')
   373         acc, dom = addr.split(b'@')
   374         acc.decode('ascii')
   374         acc.decode('ascii')
   375         dom = dom.decode(pycompat.sysstr(encoding.encoding)).encode('idna')
   375         dom = dom.decode(pycompat.sysstr(encoding.encoding)).encode('idna')
   376         addr = b'%s@%s' % (acc, dom)
   376         addr = b'%s@%s' % (acc, dom)