mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
Port relevant patches for SF 1409455 to the trunk for email 3.0/Python 2.5.
Will port to Python 2.4.
This commit is contained in:
parent
a871ef2b3e
commit
e58df82919
5 changed files with 20 additions and 8 deletions
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (C) 2001-2004 Python Software Foundation
|
# Copyright (C) 2001-2006 Python Software Foundation
|
||||||
# Author: Ben Gertzfield, Barry Warsaw
|
# Author: Ben Gertzfield, Barry Warsaw
|
||||||
# Contact: email-sig@python.org
|
# Contact: email-sig@python.org
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (C) 2001-2004 Python Software Foundation
|
# Copyright (C) 2001-2006 Python Software Foundation
|
||||||
# Author: Barry Warsaw
|
# Author: Barry Warsaw
|
||||||
# Contact: email-sig@python.org
|
# Contact: email-sig@python.org
|
||||||
|
|
||||||
|
@ -175,9 +175,6 @@ class Generator:
|
||||||
payload = msg.get_payload()
|
payload = msg.get_payload()
|
||||||
if payload is None:
|
if payload is None:
|
||||||
return
|
return
|
||||||
cset = msg.get_charset()
|
|
||||||
if cset is not None:
|
|
||||||
payload = cset.body_encode(payload)
|
|
||||||
if not isinstance(payload, basestring):
|
if not isinstance(payload, basestring):
|
||||||
raise TypeError('string payload expected: %s' % type(payload))
|
raise TypeError('string payload expected: %s' % type(payload))
|
||||||
if self._mangle_from_:
|
if self._mangle_from_:
|
||||||
|
|
|
@ -250,11 +250,14 @@ class Message:
|
||||||
charset=charset.get_output_charset())
|
charset=charset.get_output_charset())
|
||||||
else:
|
else:
|
||||||
self.set_param('charset', charset.get_output_charset())
|
self.set_param('charset', charset.get_output_charset())
|
||||||
|
if str(charset) <> charset.get_output_charset():
|
||||||
|
self._payload = charset.body_encode(self._payload)
|
||||||
if not self.has_key('Content-Transfer-Encoding'):
|
if not self.has_key('Content-Transfer-Encoding'):
|
||||||
cte = charset.get_body_encoding()
|
cte = charset.get_body_encoding()
|
||||||
try:
|
try:
|
||||||
cte(self)
|
cte(self)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
|
self._payload = charset.body_encode(self._payload)
|
||||||
self.add_header('Content-Transfer-Encoding', cte)
|
self.add_header('Content-Transfer-Encoding', cte)
|
||||||
|
|
||||||
def get_charset(self):
|
def get_charset(self):
|
||||||
|
|
|
@ -2221,7 +2221,8 @@ class TestMiscellaneous(TestEmailBase):
|
||||||
charset = Charset(charsets[0])
|
charset = Charset(charsets[0])
|
||||||
eq(charset.get_body_encoding(), 'base64')
|
eq(charset.get_body_encoding(), 'base64')
|
||||||
msg.set_payload('hello world', charset=charset)
|
msg.set_payload('hello world', charset=charset)
|
||||||
eq(msg.get_payload(), 'hello world')
|
eq(msg.get_payload(), 'aGVsbG8gd29ybGQ=\n')
|
||||||
|
eq(msg.get_payload(decode=True), 'hello world')
|
||||||
eq(msg['content-transfer-encoding'], 'base64')
|
eq(msg['content-transfer-encoding'], 'base64')
|
||||||
# Try another one
|
# Try another one
|
||||||
msg = Message()
|
msg = Message()
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
# Copyright (C) 2002 Python Software Foundation
|
# Copyright (C) 2002-2006 Python Software Foundation
|
||||||
|
# Contact: email-sig@python.org
|
||||||
# email package unit tests for (optional) Asian codecs
|
# email package unit tests for (optional) Asian codecs
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
@ -7,6 +8,8 @@ from test.test_support import TestSkipped, run_unittest
|
||||||
from email.test.test_email import TestEmailBase
|
from email.test.test_email import TestEmailBase
|
||||||
from email.Charset import Charset
|
from email.Charset import Charset
|
||||||
from email.Header import Header, decode_header
|
from email.Header import Header, decode_header
|
||||||
|
from email.Message import Message
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TestEmailAsianCodecs(TestEmailBase):
|
class TestEmailAsianCodecs(TestEmailBase):
|
||||||
|
@ -42,6 +45,14 @@ Hello World! =?iso-2022-jp?b?GyRCJU8lbSE8JW8hPCVrJUkhKhsoQg==?=
|
||||||
# TK: full decode comparison
|
# TK: full decode comparison
|
||||||
eq(h.__unicode__().encode('euc-jp'), long)
|
eq(h.__unicode__().encode('euc-jp'), long)
|
||||||
|
|
||||||
|
def test_payload_encoding(self):
|
||||||
|
jhello = '\xa5\xcf\xa5\xed\xa1\xbc\xa5\xef\xa1\xbc\xa5\xeb\xa5\xc9\xa1\xaa'
|
||||||
|
jcode = 'euc-jp'
|
||||||
|
msg = Message()
|
||||||
|
msg.set_payload(jhello, jcode)
|
||||||
|
ustr = unicode(msg.get_payload(), msg.get_content_charset())
|
||||||
|
self.assertEqual(jhello, ustr.encode(jcode))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue