[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