[Checkins] SVN: zope.sendmail/trunk/ Maildir storage for queue can now handle unicode passed in for message or
Fabio Tranchitella
kobold at kobold.it
Wed Mar 3 04:57:08 EST 2010
Log message for revision 109588:
Maildir storage for queue can now handle unicode passed in for message or
to/from addresses (change backported from repoze.sendmail).
Changed:
U zope.sendmail/trunk/CHANGES.txt
U zope.sendmail/trunk/src/zope/sendmail/maildir.py
U zope.sendmail/trunk/src/zope/sendmail/tests/test_maildir.py
-=-
Modified: zope.sendmail/trunk/CHANGES.txt
===================================================================
--- zope.sendmail/trunk/CHANGES.txt 2010-03-03 09:56:54 UTC (rev 109587)
+++ zope.sendmail/trunk/CHANGES.txt 2010-03-03 09:57:07 UTC (rev 109588)
@@ -5,7 +5,8 @@
3.7.2 (unreleased)
------------------
-- ...
+- Maildir storage for queue can now handle unicode passed in for message or
+ to/from addresses (change backported from repoze.sendmail).
3.7.1 (2010-01-13)
------------------
Modified: zope.sendmail/trunk/src/zope/sendmail/maildir.py
===================================================================
--- zope.sendmail/trunk/src/zope/sendmail/maildir.py 2010-03-03 09:56:54 UTC (rev 109587)
+++ zope.sendmail/trunk/src/zope/sendmail/maildir.py 2010-03-03 09:57:07 UTC (rev 109588)
@@ -114,6 +114,12 @@
join(subdir_new, unique))
+def _encode_utf8(s):
+ if isinstance(s, unicode):
+ s = s.encode('utf-8')
+ return s
+
+
class MaildirMessageWriter(object):
"""See `zope.sendmail.interfaces.IMaildirMessageWriter`"""
@@ -127,9 +133,10 @@
self._aborted = False
def write(self, data):
- self._fd.write(data)
+ self._fd.write(_encode_utf8(data))
def writelines(self, lines):
+ lines = map(_encode_utf8, lines)
self._fd.writelines(lines)
def close(self):
Modified: zope.sendmail/trunk/src/zope/sendmail/tests/test_maildir.py
===================================================================
--- zope.sendmail/trunk/src/zope/sendmail/tests/test_maildir.py 2010-03-03 09:56:54 UTC (rev 109587)
+++ zope.sendmail/trunk/src/zope/sendmail/tests/test_maildir.py 2010-03-03 09:57:07 UTC (rev 109588)
@@ -295,7 +295,21 @@
writer.abort()
self.assertEquals(self.fake_os_module._renamed_files, ())
+ def test_message_writer_unicode(self):
+ from zope.sendmail.maildir import MaildirMessageWriter
+ filename1 = '/path/to/maildir/tmp/1234500002.4242.myhostname'
+ filename2 = '/path/to/maildir/new/1234500002.4242.myhostname'
+ fd = FakeFile(filename1, 'w')
+ writer = MaildirMessageWriter(fd, filename1, filename2)
+ self.assertEquals(writer._fd._filename, filename1)
+ self.assertEquals(writer._fd._mode, 'w') # TODO or 'wb'?
+ print >> writer, u'fe\xe8',
+ writer.write(u' fi\xe8')
+ writer.writelines([u' fo\xe8', u' fo\xf2'])
+ self.assertEquals(writer._fd._written,
+ 'fe\xc3\xa8 fi\xc3\xa8 fo\xc3\xa8 fo\xc3\xb2')
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestMaildir))
More information about the checkins
mailing list