Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
c723da36
Commit
c723da36
authored
Jun 27, 2013
by
R David Murray
Browse files
Options
Browse Files
Download
Plain Diff
Merge #14360: make encoders.encode_quopri work.
parents
cd83fa8c
f6069f9f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
2 deletions
+35
-2
Lib/email/encoders.py
Lib/email/encoders.py
+6
-2
Lib/test/test_email/test_email.py
Lib/test/test_email/test_email.py
+29
-0
No files found.
Lib/email/encoders.py
View file @
c723da36
...
...
@@ -20,7 +20,7 @@ from quopri import encodestring as _encodestring
def
_qencode
(
s
):
enc
=
_encodestring
(
s
,
quotetabs
=
True
)
# Must encode spaces, which quopri.encodestring() doesn't do
return
enc
.
replace
(
' '
,
'=20'
)
return
enc
.
replace
(
b' '
,
b
'=20'
)
def
encode_base64
(
msg
):
...
...
@@ -41,8 +41,12 @@ def encode_quopri(msg):
Also, add an appropriate Content-Transfer-Encoding header.
"""
orig
=
msg
.
get_payload
()
if
isinstance
(
orig
,
str
):
# If it is a string, the model data may have binary data encoded in via
# surrogateescape. Convert back to bytes so we can CTE encode it.
orig
=
orig
.
encode
(
'ascii'
,
'surrogateescape'
)
encdata
=
_qencode
(
orig
)
msg
.
set_payload
(
encdata
)
msg
.
set_payload
(
encdata
.
decode
(
'ascii'
,
'surrogateescape'
)
)
msg
[
'Content-Transfer-Encoding'
]
=
'quoted-printable'
...
...
Lib/test/test_email/test_email.py
View file @
c723da36
...
...
@@ -1474,6 +1474,35 @@ class TestMIMEApplication(unittest.TestCase):
self
.
assertEqual
(
msg
.
get_payload
(),
'
\
uFFFD
'
*
len
(
bytesdata
))
self
.
assertEqual
(
msg2
.
get_payload
(
decode
=
True
),
bytesdata
)
def
test_binary_body_with_encode_quopri
(
self
):
# Issue 14360.
bytesdata
=
b'
\
xfa
\
xfb
\
xfc
\
xfd
\
xfe
\
xff
'
msg
=
MIMEApplication
(
bytesdata
,
_encoder
=
encoders
.
encode_quopri
)
self
.
assertEqual
(
msg
.
get_payload
(),
'=FA=FB=FC=FD=FE=FF=20'
)
self
.
assertEqual
(
msg
.
get_payload
(
decode
=
True
),
bytesdata
)
self
.
assertEqual
(
msg
[
'Content-Transfer-Encoding'
],
'quoted-printable'
)
s
=
BytesIO
()
g
=
BytesGenerator
(
s
)
g
.
flatten
(
msg
)
wireform
=
s
.
getvalue
()
msg2
=
email
.
message_from_bytes
(
wireform
)
self
.
assertEqual
(
msg
.
get_payload
(),
'=FA=FB=FC=FD=FE=FF=20'
)
self
.
assertEqual
(
msg2
.
get_payload
(
decode
=
True
),
bytesdata
)
self
.
assertEqual
(
msg2
[
'Content-Transfer-Encoding'
],
'quoted-printable'
)
def
test_binary_body_with_encode_base64
(
self
):
bytesdata
=
b'
\
xfa
\
xfb
\
xfc
\
xfd
\
xfe
\
xff
'
msg
=
MIMEApplication
(
bytesdata
,
_encoder
=
encoders
.
encode_base64
)
self
.
assertEqual
(
msg
.
get_payload
(),
'+vv8/f7/
\
n
'
)
self
.
assertEqual
(
msg
.
get_payload
(
decode
=
True
),
bytesdata
)
s
=
BytesIO
()
g
=
BytesGenerator
(
s
)
g
.
flatten
(
msg
)
wireform
=
s
.
getvalue
()
msg2
=
email
.
message_from_bytes
(
wireform
)
self
.
assertEqual
(
msg
.
get_payload
(),
'+vv8/f7/
\
n
'
)
self
.
assertEqual
(
msg2
.
get_payload
(
decode
=
True
),
bytesdata
)
# Test the basic MIMEText class
class
TestMIMEText
(
unittest
.
TestCase
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment