email as_bytes() corruption of headers with SMTPUTF8 policy
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Reproduce el problema con email.message_from_bytes y msg.as_bytes(policy=email.policy.SMTPUTF8) usando el ejemplo del informe. Rastrea los puntos de entrada del paquete email para el análisis y la serialización de encabezados, y después añade una prueba de regresión que conserve el nombre visible Unicode y coincida con la salida esperada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug report
Reading and then writing RFC2822 messages with SMTPUTF8 policy results in header corruption.
import email
import email.policy
odata = '''From: Unicôde Nâme <example@example.com>
To: Name One <name-one@example.com>, Name Two <name-two@example.com>, Unicôde Nàme <unicode-name@example.com>
Subject: Unicôde Subjéct
This message contains Uniçôde Çôntent.
'''
msg = email.message_from_bytes(odata.encode(), policy=email.policy.SMTPUTF8)
ndata = msg.as_bytes(policy=email.policy.SMTPUTF8)
print(ndata.decode())
Expected output:
From: Unicôde Nâme <example@example.com>
To: Name One <name-one@example.com>, Name Two <name-two@example.com>,
Unicôde Nàme <unicode-name@example.com>
Subject: Unicôde Subjéct
This message contains Uniçôde Çôntent.
Actual output:
From: Unicôde Nâme <example@example.com>
To: Name One <name-one@example.com>, Name Two <name-two@example.com>,
=?unknown-8bit?q?Unic=C3=B4de_N=C3=A0me?= <unicode-name@example.com>
Subject: Unicôde Subjéct
This message contains Uniçôde Çôntent.
Your environment
- CPython versions tested on: Python 3.11.0
- Operating system and architecture: Linux x86-64, Fedora 37
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 36k
- Merge medio
- 1 d 9 h
- PR fusionados (30 d)
- 558
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de python/cpython
-
docs pending
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
stdlib type-feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
stdlib type-feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
build type-bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
stdlib topic-email type-feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Todos los issues de python/cpython
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
PolicyEngine/policyengine-us#9559 ·
-
priority: p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
googleapis/librarian#7636 ·
-
from:qa priority:P2 reliability tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
spec-kitty/spec-kitty#4874 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100