From 987e15072813552bb37cbe1dcf1746412d40c88b Mon Sep 17 00:00:00 2001 From: midnightstardust1203 Date: Sat, 3 Aug 2024 10:31:51 +0800 Subject: [PATCH 1/5] fixed email bug --- Lib/email/_policybase.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/email/_policybase.py b/Lib/email/_policybase.py index c7694a44e266392..8add7fb40fdd175 100644 --- a/Lib/email/_policybase.py +++ b/Lib/email/_policybase.py @@ -307,8 +307,8 @@ def header_source_parse(self, sourcelines): """ name, value = sourcelines[0].split(':', 1) - value = value.lstrip(' \t') + ''.join(sourcelines[1:]) - return (name, value.rstrip('\r\n')) + value = value + ''.join(sourcelines[1:]) + return (name, value.lstrip(' \r\n\t').rstrip('\r\n')) def header_store_parse(self, name, value): """+ From 00992dfa4c9006237c85a126314d68351fd6ae68 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Sat, 3 Aug 2024 02:33:56 +0000 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Library/2024-08-03-02-33-56.gh-issue-109252.8H17Tt.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2024-08-03-02-33-56.gh-issue-109252.8H17Tt.rst diff --git a/Misc/NEWS.d/next/Library/2024-08-03-02-33-56.gh-issue-109252.8H17Tt.rst b/Misc/NEWS.d/next/Library/2024-08-03-02-33-56.gh-issue-109252.8H17Tt.rst new file mode 100644 index 000000000000000..7f80a94b3507324 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-08-03-02-33-56.gh-issue-109252.8H17Tt.rst @@ -0,0 +1 @@ +Fixed :mod:`email` preserving leading whitespace in wrapped headers. From 7eb91f719591b16452832173653bdbfced8445aa Mon Sep 17 00:00:00 2001 From: midnightstardust1203 Date: Sat, 3 Aug 2024 13:28:17 +0800 Subject: [PATCH 3/5] add test --- Lib/test/test_email/test_policy.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Lib/test/test_email/test_policy.py b/Lib/test/test_email/test_policy.py index baa35fd68e49c51..a0efb946ee57c35 100644 --- a/Lib/test/test_email/test_policy.py +++ b/Lib/test/test_email/test_policy.py @@ -423,6 +423,19 @@ def test_header_store_parse_rejects_newlines(self): self.assertRaises(ValueError, instance.header_store_parse, 'From', 'spam\negg@foo.py') + +class TestLeadingWhitespacePolicies(unittest.TestCase): + + def test_message_id(self): + # Create an email message from a string + message = email.message_from_string("Message-id:\r\n\t\r\n\r\n") + + # Assert that the 'message-id' header matches the expected value + self.assertEqual( + message['message-id'], + '', + f"Expected '' but got {message['message-id']!r}" + ) if __name__ == '__main__': From b89dfd2e9d1c368b0cd2d430448d84c08e29aa17 Mon Sep 17 00:00:00 2001 From: midnightstardust1203 Date: Sat, 3 Aug 2024 16:45:19 +0800 Subject: [PATCH 4/5] lint --- Lib/test/test_email/test_policy.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/Lib/test/test_email/test_policy.py b/Lib/test/test_email/test_policy.py index a0efb946ee57c35..a19dab0a8bd2842 100644 --- a/Lib/test/test_email/test_policy.py +++ b/Lib/test/test_email/test_policy.py @@ -429,7 +429,6 @@ class TestLeadingWhitespacePolicies(unittest.TestCase): def test_message_id(self): # Create an email message from a string message = email.message_from_string("Message-id:\r\n\t\r\n\r\n") - # Assert that the 'message-id' header matches the expected value self.assertEqual( message['message-id'], @@ -437,6 +436,5 @@ def test_message_id(self): f"Expected '' but got {message['message-id']!r}" ) - if __name__ == '__main__': unittest.main() From fe74adf293fd8ccfb3093984afa3855b5643daf6 Mon Sep 17 00:00:00 2001 From: midnightstardust1203 Date: Sat, 3 Aug 2024 16:57:31 +0800 Subject: [PATCH 5/5] lint --- Lib/test/test_email/test_policy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_email/test_policy.py b/Lib/test/test_email/test_policy.py index a19dab0a8bd2842..c445d57eb949eba 100644 --- a/Lib/test/test_email/test_policy.py +++ b/Lib/test/test_email/test_policy.py @@ -423,7 +423,7 @@ def test_header_store_parse_rejects_newlines(self): self.assertRaises(ValueError, instance.header_store_parse, 'From', 'spam\negg@foo.py') - + class TestLeadingWhitespacePolicies(unittest.TestCase): def test_message_id(self):