Message373724
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() |
|
Date |
User |
Action |
Args |
2020-07-15 20:40:58 | dmaurer | set | recipients:
+ dmaurer, barry, r.david.murray |
2020-07-15 20:40:58 | dmaurer | set | messageid: <1594845658.73.0.543056076491.issue41307@roundup.psfhosted.org> |
2020-07-15 20:40:58 | dmaurer | link | issue41307 messages |
2020-07-15 20:40:58 | dmaurer | create | |
|