New submission from Michael Thies <accou...@mhthies.de>:

Email header refolding in email._header_value_parser adds additional carriage 
return symbols to the end of nested parse trees, when used with an EmailPolicy 
with linesep='\r\n'. This leads to broken email headers when composing an email 
with a "To:" or "CC:" header having a comma-separated list of recipients with 
some of them containing non-ASCII characters in their DisplayName.

The bug seems to be caused by the following line (in Python 3.7):
`encoded_part = part.fold(policy=policy)[:-1] # strip nl`
(email/_header_value_parser.py, line 2629)

This line calls part.fold() / _refold_parse_tree() recursively and tries to 
remove the trailing newline, which is added by the recursive call of 
_refold_parse_tree(). Unfortunately, it fails to do so, if the length of the 
policy's line separator sequence does not equal 1. Thus, this line should be 
corrected to something like
`encoded_part = part.fold(policy=policy)[:-len(policy.linesep)] # strip nl`

----------
components: email
messages: 328362
nosy: barry, michael.thies, r.david.murray
priority: normal
severity: normal
status: open
title: Email header refolding adds additional \r in nested parse trees
type: behavior
versions: Python 3.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35057>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to