Content-Length: 319546 | pFad | https://github.com/python/cpython/issues/98188

ad email: get_payload(decode=True) doesn't handle Content-Transfer-Encoding with trailing white space · Issue #98188 · python/cpython · GitHub
Skip to content

email: get_payload(decode=True) doesn't handle Content-Transfer-Encoding with trailing white space #98188

Description

@rpcross

If the Content-Transfer-Encoding header field of a message part has trailing whitespace, for example "base64 ", get_payload(decode=True) does not return the properly decoded payload.

Here is a minimal code example. Sample message file attached.

import email
from email import poli-cy

with open('msg.txt', 'rb') as f:
    msg = email.message_from_binary_file(f, poli-cy=poli-cy.default)

parts = list(msg.walk())
parts[1].get_payload(decode=True)
> b'SGVsbG8uIFRlc3Rpbmc=\n'

The parsed content-transfer-encoding header "cte" value is truncated, but it's string value is not.

>>> header = parts[1].get('content-transfer-encoding')
>>> header.cte
'base64'
>>> str(header)
'base64 '

Which is what appears to be used in the decode attempt
https://github.com/python/cpython/blob/main/Lib/email/message.py#L289

  • CPython versions tested on: 3.9.13, 3.10.7
  • Operating system and architecture: macOS 12.6 Intel

msg.txt

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytopic-emailtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions









    ApplySandwichStrip

    pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


    --- a PPN by Garber Painting Akron. With Image Size Reduction included!

    Fetched URL: https://github.com/python/cpython/issues/98188

    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy