Skip to content

Multipart Emails: Python2 bug #429

@seshrs

Description

@seshrs
Contributor

A bug in future.backports.email.Message.set_boundary causes errors when serializing multipart email Message objects.

Using Python 2.7.15, here is output from serializing a multipart email:

>>> import future.backports.email as email
>>> import future.backports.email.mime.multipart
>>> m = email.mime.multipart.MIMEMultipart()
>>> m.as_string()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/future/backports/email/message.py", line 155, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/local/lib/python2.7/site-packages/future/backports/email/generator.py", line 118, in flatten
    self._write(msg)
  File "/usr/local/lib/python2.7/site-packages/future/backports/email/generator.py", line 190, in _write
    self._write_headers(msg)
  File "/usr/local/lib/python2.7/site-packages/future/backports/email/generator.py", line 216, in _write_headers
    for h, v in msg.raw_items():
  File "/usr/local/lib/python2.7/site-packages/future/backports/email/message.py", line 446, in raw_items
    return iter(self._headers.copy())
AttributeError: 'list' object has no attribute 'copy'

Another example indicating the source of the bug:

>>> import future.backports.email as email
>>> import future.backports.email.mime.multipart
>>> m = email.mime.multipart.MIMEMultipart()
>>> type(m._headers)
<class 'future.types.newlist.newlist'>
>>> m.set_boundary('===============6387699881409002085==')
>>> type(m._headers)
<type 'list'>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @seshrs

      Issue actions

        Multipart Emails: Python2 bug · Issue #429 · PythonCharmers/python-future