diff --git a/hgext/notify.py b/hgext/notify.py --- a/hgext/notify.py +++ b/hgext/notify.py @@ -148,7 +148,6 @@ web.baseurl from __future__ import absolute_import import email.errors as emailerrors -import email.parser as emailparser import fnmatch import hashlib import socket @@ -382,9 +381,8 @@ class notifier(object): ) return - p = emailparser.Parser() try: - msg = p.parsestr(encoding.strfromlocal(data)) + msg = mail.parsebytes(data) except emailerrors.MessageParseError as inst: raise error.Abort(inst) diff --git a/mercurial/mail.py b/mercurial/mail.py --- a/mercurial/mail.py +++ b/mercurial/mail.py @@ -440,6 +440,9 @@ if pycompat.ispy3: finally: fp.detach() + def parsebytes(data): + ep = email.parser.BytesParser() + return ep.parsebytes(data) else: @@ -449,6 +452,10 @@ else: ep = email.parser.Parser() return ep.parse(fp) + def parsebytes(data): + ep = email.parser.Parser() + return ep.parsestr(data) + def headdecode(s): '''Decodes RFC-2047 header'''