From 00ae435deef434f471e39bea3f3ab3a3e3cd90fe Mon Sep 17 00:00:00 2001 From: R David Murray Date: Wed, 21 Aug 2013 21:10:31 -0400 Subject: #18324: set_payload now correctly handles binary input. This also backs out the previous fixes for for #14360, #1717, and #16564. Those bugs were actually caused by the fact that set_payload didn't decode to str, thus rendering the model inconsistent. This fix does mean the data processed by the encoder functions goes through an extra encode/decode cycle, but it means the model is always consistent. Future API updates will provide a better way to encode payloads, which will bypass this minor de-optimization. Tests by Vajrasky Kok. --- Lib/email/message.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Lib/email/message.py') diff --git a/Lib/email/message.py b/Lib/email/message.py index 3feab52799..5020a0325e 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -275,6 +275,8 @@ class Message: Optional charset sets the message's default character set. See set_charset() for details. """ + if isinstance(payload, bytes): + payload = payload.decode('ascii', 'surrogateescape') self._payload = payload if charset is not None: self.set_charset(charset) -- cgit v1.2.1