diff options
author | Barry Warsaw <barry@python.org> | 2006-01-17 04:49:07 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2006-01-17 04:49:07 (GMT) |
commit | a0f28efcd1819d7baccd1a212a21ffb1af5558bd (patch) | |
tree | b025f080749070ab78d6ab85e6bc5f47398e46e2 | |
parent | 989b69a519b1f4a765310b705b30ab0449153591 (diff) | |
download | cpython-a0f28efcd1819d7baccd1a212a21ffb1af5558bd.zip cpython-a0f28efcd1819d7baccd1a212a21ffb1af5558bd.tar.gz cpython-a0f28efcd1819d7baccd1a212a21ffb1af5558bd.tar.bz2 |
Ported 42075 from release23-maint branch.
SF bug #1403349 solution for email 3.0; some MUAs use the 'file' parameter
name in the Content-Distribution header, so Message.get_filename() should fall
back to using that. Will port to the Python 2.5 trunk.
Also, bump the email package version to 3.0.1 for eventual release. Of
course, add a test case too.
XXX Need to update the documentation.
-rw-r--r-- | Lib/email/Message.py | 8 | ||||
-rw-r--r-- | Lib/email/__init__.py | 4 | ||||
-rw-r--r-- | Lib/email/test/data/msg_44.txt | 35 | ||||
-rw-r--r-- | Lib/email/test/test_email.py | 9 |
4 files changed, 51 insertions, 5 deletions
diff --git a/Lib/email/Message.py b/Lib/email/Message.py index b466f39..88fd786 100644 --- a/Lib/email/Message.py +++ b/Lib/email/Message.py @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2004 Python Software Foundation +# Copyright (C) 2001-2006 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig@python.org @@ -701,11 +701,15 @@ class Message: """Return the filename associated with the payload if present. The filename is extracted from the Content-Disposition header's - `filename' parameter, and it is unquoted. + `filename' parameter, and it is unquoted. If that header is missing + the `filename' parameter, this method falls back to looking for the + `name' parameter. """ missing = object() filename = self.get_param('filename', missing, 'content-disposition') if filename is missing: + filename = self.get_param('name', missing, 'content-disposition') + if filename is missing: return failobj return Utils.collapse_rfc2231_value(filename).strip() diff --git a/Lib/email/__init__.py b/Lib/email/__init__.py index e622b3f..e5c0e2e 100644 --- a/Lib/email/__init__.py +++ b/Lib/email/__init__.py @@ -1,10 +1,10 @@ -# Copyright (C) 2001-2004 Python Software Foundation +# Copyright (C) 2001-2006 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig@python.org """A package for parsing, handling, and generating email messages.""" -__version__ = '3.0+' +__version__ = '3.0.1' __all__ = [ 'base64MIME', diff --git a/Lib/email/test/data/msg_44.txt b/Lib/email/test/data/msg_44.txt new file mode 100644 index 0000000..ae462a6 --- /dev/null +++ b/Lib/email/test/data/msg_44.txt @@ -0,0 +1,35 @@ +Return-Path: <barry@python.org> +Delivered-To: barry@python.org +Received: by mail.python.org (Postfix, from userid 889) + id C2BF0D37C6; Tue, 11 Sep 2001 00:05:05 -0400 (EDT) +MIME-Version: 1.0 +Content-Type: multipart/mixed; boundary="h90VIIIKmx" +Content-Transfer-Encoding: 7bit +Message-ID: <15261.36209.358846.118674@anthem.python.org> +From: barry@python.org (Barry A. Warsaw) +To: barry@python.org +Subject: a simple multipart +Date: Tue, 11 Sep 2001 00:05:05 -0400 +X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid +X-Attribution: BAW +X-Oblique-Strategy: Make a door into a window + + +--h90VIIIKmx +Content-Type: text/plain +Content-Disposition: inline; name="msg.txt" +Content-Transfer-Encoding: 7bit + +a simple kind of mirror +to reflect upon our own + +--h90VIIIKmx +Content-Type: text/plain +Content-Disposition: inline; name="msg.txt" +Content-Transfer-Encoding: 7bit + +a simple kind of mirror +to reflect upon our own + +--h90VIIIKmx-- + diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index 2f184fd..c78e2fd 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2004 Python Software Foundation +# Copyright (C) 2001-2006 Python Software Foundation # Contact: email-sig@python.org # email package unit tests @@ -147,6 +147,13 @@ class TestMessageAPI(TestEmailBase): subpart = msg.get_payload(1) eq(subpart.get_filename(), 'dingusfish.gif') + def test_get_filename_with_name_parameter(self): + eq = self.assertEqual + + msg = self._msgobj('msg_44.txt') + filenames = [p.get_filename() for p in msg.get_payload()] + eq(filenames, ['msg.txt', 'msg.txt']) + def test_get_boundary(self): eq = self.assertEqual msg = self._msgobj('msg_07.txt') |