Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4fa61a7

Browse files
authored
bpo-40597: Allow email.contextmanager set_content() to set a null string. (GH-20542)
1 parent 61fc23c commit 4fa61a7

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

Lib/email/contentmanager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def embedded_body(lines): return linesep.join(lines) + linesep
146146
def normal_body(lines): return b'\n'.join(lines) + b'\n'
147147
if cte==None:
148148
# Use heuristics to decide on the "best" encoding.
149-
if max(len(x) for x in lines) <= policy.max_line_length:
149+
if max((len(x) for x in lines), default=0) <= policy.max_line_length:
150150
try:
151151
return '7bit', normal_body(lines).decode('ascii')
152152
except UnicodeDecodeError:

Lib/test/test_email/test_contentmanager.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,19 @@ def test_set_text_plain(self):
303303
self.assertEqual(m.get_payload(decode=True).decode('utf-8'), content)
304304
self.assertEqual(m.get_content(), content)
305305

306+
def test_set_text_plain_null(self):
307+
m = self._make_message()
308+
content = ''
309+
raw_data_manager.set_content(m, content)
310+
self.assertEqual(str(m), textwrap.dedent("""\
311+
Content-Type: text/plain; charset="utf-8"
312+
Content-Transfer-Encoding: 7bit
313+
314+
315+
"""))
316+
self.assertEqual(m.get_payload(decode=True).decode('utf-8'), '\n')
317+
self.assertEqual(m.get_content(), '\n')
318+
306319
def test_set_text_html(self):
307320
m = self._make_message()
308321
content = "<p>Simple message.</p>\n"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed email.contentmanager to allow set_content() to set a null string.

0 commit comments

Comments
 (0)