email: multiline encoded headers
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 36k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug report
There seems to be a problem with multiline encoded headers, for example subject headers.
from email import message_from_string, policy
import base64
e = """From: <test@test.com>
To: <test@test.com>
Subject: =?UTF-8?B?0JfQsNGB0YLRgNCw0YXQvtCy0LrQsCAi0JDQu9C40LDQvdGGINCX0LTRgNCw0LLQ?=
=?UTF-8?B?tSIg4oCTINCY0L3QtNC40LLQuNC00YPQsNC70LXQvSDQvdC+0LzQtdGAINC90LAg?=
=?UTF-8?B?0YPQstC10LTQvtC80LvQtdC90LjQtQ==?=
test"""
e = message_from_string(e, policy=policy.default)
s1 = e["Subject"]
try:
e.as_bytes()
except Exception:
print("error")
else:
print("ok")
s = (base64.b64decode("0JfQsNGB0YLRgNCw0YXQvtCy0LrQsCAi0JDQu9C40LDQvdGGINCX0LTRgNCw0LLQ") + base64.b64decode("tSIg4oCTINCY0L3QtNC40LLQuNC00YPQsNC70LXQvSDQvdC+0LzQtdGAINC90LAg")
+ base64.b64decode("0YPQstC10LTQvtC80LvQtdC90LjQtQ==")).decode("utf-8")
del e["Subject"]
e["Subject"] = s
s2 = e["Subject"]
try:
e.as_bytes()
except Exception:
print("error")
else:
print("ok")
print(s1 == s2)
e = """From: <test@test.com>
To: <test@test.com>
Subject: =?UTF-8?B?0JfQsNGB0YLRgNCw0YXQvtCy0LrQsCAi0JDQu9C40LDQvdGGINCX0LTRgNCw0LLQtSIg4oCTINCY0L3QtNC40LLQuNC00YPQsNC70LXQvSDQvdC+0LzQtdGAINC90LAg0YPQstC10LTQvtC80LvQtdC90LjQtQ==?=
test"""
e = message_from_string(e, policy=policy.default)
s3 = e["Subject"]
try:
e.as_bytes()
except Exception:
print("error")
else:
print("ok")
print(s2 == s3)
Your environment
Tested on Python 3.10.4 and 3.11.0a7 on Arch Linux
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.
Línea de trabajo
Ejecute la reproducción proporcionada con los puntos de entrada email.message_from_string, policy.default y as_bytes de Python. Compare s1, s2 y s3, incluidos los fallos de serialización, y rastree después cómo el paquete email gestiona los encabezados Subject codificados y plegados. El trabajo se considera terminado cuando los encabezados codificados multilínea y de una sola línea se comportan de forma coherente sin errores y los valores decodificados coinciden.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100