Dieter Maurer <die...@handshake.de> added the comment:
The following fixes the example: from copy import copy from io import BytesIO from email.message import Message from email.generator import BytesGenerator, _has_surrogates from email._policybase import Compat32 class FixedBytesGenerator(BytesGenerator): def _handle_text(self, msg): payload = msg._payload if payload is None: return charset = msg.get_param("charset") if charset is not None \ and not self.policy.cte_type=='7bit' \ and not _has_surrogates(payload): msg = copy(msg) msg._payload = payload.encode(charset).decode( "ascii", "surrogateescape") super()._handle_text(msg) _writeBody = _handle_text class FixedMessage(Message): def as_bytes(self, unixfrom=False, policy=None): policy = self.policy if policy is None else policy fp = BytesIO() g = FixedBytesGenerator(fp, mangle_from_=False, policy=policy) g.flatten(self, unixfrom=unixfrom) return fp.getvalue() fixed_policy = Compat32(message_factory=FixedMessage) ms = message_from_string(mt, policy=fixed_policy) ms.as_bytes() ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue41307> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com