Skip to content

Commit

Permalink
Add payload support to the message encoding.
Browse files Browse the repository at this point in the history
  • Loading branch information
rpatterson committed Mar 15, 2012
1 parent 71c9c8b commit 83fa605
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
8 changes: 8 additions & 0 deletions repoze/sendmail/encoding.py
Expand Up @@ -68,6 +68,14 @@ def encode_message(message,
value = encoded
value = charset.Charset(best).header_encode(value)
message.replace_header(key, value)

payload = message.get_payload()
if payload:
best, encoded = best_charset(payload)
if BBB_PY_2:
payload = encoded
message.set_payload(payload, charset=best)

return message.as_string().encode('ascii')


Expand Down
28 changes: 27 additions & 1 deletion repoze/sendmail/tests/test_encoding.py
Expand Up @@ -13,8 +13,10 @@
##############################################################################

import unittest
import base64
import quopri
from email import message
from email import utils
from email import encoders

try:
from urllib.parse import quote
Expand Down Expand Up @@ -144,3 +146,27 @@ def test_encoding_utf_8_header_parameters(self):
b"Content-Disposition: attachment; filename*=" in encoded)
self.assertTrue(b"utf_8''"+quote(self.utf_8_encoded).encode('ascii')
in encoded)

def test_encoding_ascii_body(self):
body = 'I know what you did last PyCon'
self.message.set_payload(body)

encoded = self.encode()

self.assertTrue(body.encode('ascii') in encoded)

def test_encoding_latin_1_body(self):
body = 'I know what you did last '+self.latin_1
self.message.set_payload(body)

encoded = self.encode()

self.assertTrue(quopri.encodestring(body.encode('latin_1')) in encoded)

def test_encoding_utf_8_body(self):
body = 'I know what you did last '+self.utf_8
self.message.set_payload(body)

encoded = self.encode()

self.assertTrue(base64.encodestring(body.encode('utf_8')) in encoded)

0 comments on commit 83fa605

Please sign in to comment.