-
-
Notifications
You must be signed in to change notification settings - Fork 31.9k
mboxMessage.get_payload throws TypeError on malformed content type #80361
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This simple code:
Fails rather unexpectedly:
(I'm attaching a zip with code and mailbox) I would have expected either that the part past text/plain is ignored if it doesn't make sense, or that content-type is completely ignored. I have to process a large mailbox archive, and this is currently how I had to work around this issue, and it's causing me to have to skip email content which would otherwise be reasonably accessible: https://salsa.debian.org/nm-team/echelon/commit/617ce935a31f6256257ffb24e11a5666306406c3 |
A simplified reproducer as below. The tuple is returned from here Line 93 in 830b43d
import mailbox
import tempfile
broken_message = """
From [[email protected]](mailto:[email protected]) Wed Sep 24 01:22:15 2003
Date: Wed, 24 Sep 2003 07:05:50 +0200
From: Test test <[[email protected]](mailto:[email protected])>
To: [[email protected]](mailto:[email protected])
Subject: Re: Test
Mime-Version: 1.0
Content-Type: text/plain; charset*=utf-8†''utf-8%C2%A0
trés intéressé
"""
with tempfile.NamedTemporaryFile() as f:
f.write(broken_message.encode())
f.seek(0)
msg = mailbox.mbox(f.name)
for m in msg:
print(m.get_payload()) $ ../cpython/python.exe bpo36180.py
Traceback (most recent call last):
File "bpo36180.py", line 21, in <module>
print(m.get_payload())
File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/email/message.py", line 267, in get_payload
payload = bpayload.decode(self.get_param('charset', 'ascii'), 'replace')
TypeError: decode() argument 1 must be str, not tuple
sys:1: ResourceWarning: unclosed file <_io.BufferedRandom name='/var/folders/2b/mhgtnnpx4z943t4cc9yvw4qw0000gn/T/tmp4ddavb6g'> |
It was raised when the charset is rfc2231 encoded, e.g.: Content-Type: text/plain; charset*=ansi-x3.4-1968''utf-8
It was raised when the charset is rfc2231 encoded, e.g.: Content-Type: text/plain; charset*=ansi-x3.4-1968''utf-8
…H-117994) It was raised when the charset is rfc2231 encoded, e.g.: Content-Type: text/plain; charset*=ansi-x3.4-1968''utf-8 (cherry picked from commit deaecb8) Co-authored-by: Serhiy Storchaka <[email protected]>
) (GH-117998) It was raised when the charset is rfc2231 encoded, e.g.: Content-Type: text/plain; charset*=ansi-x3.4-1968''utf-8 (cherry picked from commit deaecb8) Co-authored-by: Serhiy Storchaka <[email protected]>
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs
The text was updated successfully, but these errors were encountered: