Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
Closed
Description
Bug report
Bug description:
When parsing back a written email, whitespace seems to be prepended to the header if the header was wrapped upon writing.
This is particularly noticeable for message-ids, which end up different - with either a space or a newline prepended depending on what policy is set to (compat32: newline, default: space).
importstringfromemailimportmessage_from_bytesfromemail.messageimportEmailMessageimportemail.policyorig=EmailMessage()orig["Message-ID"]=string.ascii_lowercase*3policy=email.policy.default# changing to compat32 emits a different errorparsed=message_from_bytes(orig.as_bytes(policy=policy),policy=policy)assert (parsed["Message-ID"]==orig["Message-ID"]),f"message ids don't match: '{orig['Message-ID']}' != '{parsed['Message-ID']}'"
I'm not very familiar with RFC2822, but based on therules it includes for "long" header fields, the written email bytes look right to me, it's just when it's being read back it's not right.
CPython versions tested on:
3.9, 3.12
Operating systems tested on:
Linux