Es scheint mir, wie email.Message.as_bytes gebrochen:MIMEBase: Konvertierung in Bytes und zurück entfernt r in Binärdaten: Dokumentiertes oder nur gebrochenes Verhalten in Python 3?
import email
from email.encoders import encode_7or8bit
from email.mime.base import MIMEBase
orig_data = b"Zeilenenden\n<Unix\r\n<DOS\rMac"
msg = MIMEBase('application/octet-stream', "gzip")
msg.set_payload(orig_data)
encode_7or8bit(msg)
print("orig_data = %r" % orig_data)
print("payload = %r" % msg.get_payload(decode=1))
b = msg.as_bytes()
msg2 = email.message_from_bytes(b)
print("payload2 = %r" % msg2.get_payload(decode=1))
Der Ausgang
orig_data = b'Zeilenenden\n<Unix\r\n<DOS\rMac'
payload = b'Zeilenenden\n<Unix\r\n<DOS\rMac'
payload2 = b'Zeilenenden\n<Unix\n<DOS\nMac'
Hinweis ist, wie die Nachrichtenkonvertierung> Bytes> Meldung des binären Nutzlast bricht. Diese
verwendet arbeitet mit ähnlichem Code in Python 2.
Ist das ein Bug oder sollte und wenn ja, wo es dokumentiert?