Skip to content

bpo-133311: have MIMEImage respect policy.max_line_length #133322

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

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

vedant713
Copy link

This patch updates Lib/email/mime/image.py so that MIMEImage honors the max_line_length setting from the provided EmailPolicy when Base64-encoding image payloads.

  • Adds imports for base64 and textwrap.wrap
  • Replaces the old set_payload(_imagedata) + _encoder(self) calls with an explicit Base64 encode, wrap to policy.max_line_length (default 76), and then calls set_payload with the wrapped text.
  • Ensures CRLF line endings and proper headers are still applied by set_payload.

Fixes issue #133311: MIMEImage’s policy argument not taking effect.

This patch updates Lib/email/mime/image.py so that MIMEImage honors the max_line_length
setting from the provided EmailPolicy when Base64-encoding image payloads.

- Adds imports for base64 and textwrap.wrap
- Replaces the old `set_payload(_imagedata)` + `_encoder(self)` calls
  with an explicit Base64 encode, wrap to `policy.max_line_length` (default 76),
  and then calls `set_payload` with the wrapped text.
- Ensures CRLF line endings and proper headers are still applied by set_payload.

Fixes issue python#133311: MIMEImage’s policy argument not taking effect.
@vedant713 vedant713 requested a review from a team as a code owner May 2, 2025 23:17
@python-cla-bot
Copy link

python-cla-bot bot commented May 2, 2025

All commit authors signed the Contributor License Agreement.

CLA signed

@bedevere-app
Copy link

bedevere-app bot commented May 2, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

@vedant713 vedant713 changed the title mime: have MIMEImage respect policy.max_line_length bpo-133311: have MIMEImage respect policy.max_line_length May 2, 2025
This patch updates Lib/email/mime/image.py so that MIMEImage honors the max_line_length
setting from the provided EmailPolicy when Base64-encoding image payloads.

- Adds imports for base64 and textwrap.wrap
- Replaces the old `self.set_payload(_imagedata)` + `_encoder(self)` calls
  with an explicit Base64 encode, wrap to `policy.max_line_length` (default 76),
  and then calls `self.set_payload` with the wrapped text.
- Ensures CRLF line endings and proper headers are still applied by set_payload.
@bedevere-app
Copy link

bedevere-app bot commented May 2, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

@bedevere-app
Copy link

bedevere-app bot commented May 2, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

self.set_payload(_imagedata)
_encoder(self)

#self.set_payload(_imagedata)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we remove these comments?

@@ -8,6 +8,8 @@

from email import encoders
from email.mime.nonmultipart import MIMENonMultipart
import base64
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's best to sort the imports, although there won't be any negative impact if we don't do so :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this repo allow some sort of pre-commit? Like isort and blake hooks. Those things can help do this automatically.

Copy link
Contributor

@abhi-jha abhi-jha May 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants