email: multiline encoded headers
Đang mở
Chưa có ai nhận issue này.
stdlib
topic-email
type-bug
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 36k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
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
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Chạy bản tái hiện được cung cấp với các entry point email.message_from_string, policy.default và as_bytes của Python. So sánh s1, s2 và s3, bao gồm cả các lỗi tuần tự hóa, sau đó theo dõi cách gói email xử lý các header Subject được mã hóa và gấp dòng. Hoàn tất khi các header được mã hóa nhiều dòng và một dòng hoạt động nhất quán mà không có lỗi, đồng thời các giá trị đã giải mã khớp nhau.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- backend
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 42/100