Kaydet (Commit) a0f28efc authored tarafından Barry Warsaw's avatar Barry Warsaw

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.
üst 989b69a5
# Copyright (C) 2001-2004 Python Software Foundation # Copyright (C) 2001-2006 Python Software Foundation
# Author: Barry Warsaw # Author: Barry Warsaw
# Contact: email-sig@python.org # Contact: email-sig@python.org
...@@ -701,10 +701,14 @@ class Message: ...@@ -701,10 +701,14 @@ class Message:
"""Return the filename associated with the payload if present. """Return the filename associated with the payload if present.
The filename is extracted from the Content-Disposition header's 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() missing = object()
filename = self.get_param('filename', missing, 'content-disposition') filename = self.get_param('filename', missing, 'content-disposition')
if filename is missing:
filename = self.get_param('name', missing, 'content-disposition')
if filename is missing: if filename is missing:
return failobj return failobj
return Utils.collapse_rfc2231_value(filename).strip() return Utils.collapse_rfc2231_value(filename).strip()
......
# Copyright (C) 2001-2004 Python Software Foundation # Copyright (C) 2001-2006 Python Software Foundation
# Author: Barry Warsaw # Author: Barry Warsaw
# Contact: email-sig@python.org # Contact: email-sig@python.org
"""A package for parsing, handling, and generating email messages.""" """A package for parsing, handling, and generating email messages."""
__version__ = '3.0+' __version__ = '3.0.1'
__all__ = [ __all__ = [
'base64MIME', 'base64MIME',
......
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--
# Copyright (C) 2001-2004 Python Software Foundation # Copyright (C) 2001-2006 Python Software Foundation
# Contact: email-sig@python.org # Contact: email-sig@python.org
# email package unit tests # email package unit tests
...@@ -147,6 +147,13 @@ class TestMessageAPI(TestEmailBase): ...@@ -147,6 +147,13 @@ class TestMessageAPI(TestEmailBase):
subpart = msg.get_payload(1) subpart = msg.get_payload(1)
eq(subpart.get_filename(), 'dingusfish.gif') 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): def test_get_boundary(self):
eq = self.assertEqual eq = self.assertEqual
msg = self._msgobj('msg_07.txt') msg = self._msgobj('msg_07.txt')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment