python / python/cpython

email.message generates invalid encoded header

Offen
#136,052 3 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stdlib topic-email type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:

A message header generated by email.message.Message can contain invalid RFC 2047 encoded-words.

import sys
from email.message import Message
from email.policy import SMTP

msg = Message(policy=SMTP)
msg["Subject"] = "Re: some few filler words here RE: Routeraustausch und übriggebliebene Glasfaser"
sys.stdout.buffer.write(msg.as_bytes())

Result:

Subject: Re: some few filler words here RE: Routeraustausch und =?utf-8?q??=
 =?utf-8?q?=C3=BCbriggebliebene?= Glasfaser

The encoded-word in the first line is invalid. Per RFC 2047 the "encoded-text" must not be empty:

encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
encoded-text = 1*<Any printable ASCII character other than "?"
                 or SPACE>

The error does not appear in this case with the default policy because the header value is split up entirely differently.

CPython versions tested on:

3.13, 3.12

Operating systems tested on:

Windows, Other

Linked PRs
  • gh-136098
  • gh-136099

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das Beispiel mit email.message.Message unter Verwendung der SMTP policy zu reproduzieren und die Header-Faltung sowie den RFC 2047 encoding path zu untersuchen. Als erledigt gilt, dass der generierte Subject kein leeres encoded-text enthält und RFC 2047-valid bleibt, mit einer Regressionstestabdeckung für diese Eingabe; der Bericht listet die verknüpften PRs gh-136098 und gh-136099 auf.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.