[Email-SIG] bug possibility

Eric S. Johansson esj at harvee.org
Wed Apr 21 15:42:12 EDT 2004


you might not consider this a bug but it certainly is biting me hard.

with python 2.2.3 stock e-mail module and the 2.5.4 module, I get the 
same result (not surprising since I hear they're almost the same anyway)

given the following message (shell script for generating message 
available on request)

Received: (from esj at localhost)
         by redweb.harvee.org (8.12.10/8.12.10/Submit) id i3LJBP3v009690
         for root at redweb.harvee.org; Wed, 21 Apr 2004 15:11:25 -0400
Date: Wed, 21 Apr 2004 15:11:25 -0400
From: esj at redweb.harvee.org
Message-Id: <200404211911.i3LJBP3v009690 at redweb.harvee.org>
To: root at redweb.harvee.org

1
2
3
4
.

when I retrieve the message with as_string, I get:

Traceback (most recent call last):
   File "/usr/lib/python2.2/site-packages/Milter.py", line 188, in <lambda>
     milter.set_eom_callback(lambda ctx: ctx.getpriv().eom())
   File "./milter_daemon.py", line 94, in eom
     if camram_pymilter.do_filter(msg, self.mailfrom):
   File "./camram_pymilter.py", line 76, in do_filter
     spamtrap.insert( message )
   File "/home/esj/camram_core/modules/camram_utils.py", line 309, in insert
     self.handle.write(message.as_string(1))
   File "/usr/lib/python2.2/site-packages/email/Message.py", line 113, 
in as_string
     g.flatten(self, unixfrom=unixfrom)
   File "/usr/lib/python2.2/site-packages/email/Generator.py", line 103, 
in flatten
     self._write(msg)
   File "/usr/lib/python2.2/site-packages/email/Generator.py", line 138, 
in _write
     self._write_headers(msg)
   File "/usr/lib/python2.2/site-packages/email/Generator.py", line 184, 
in _write_headers
     header_name=h, continuation_ws='\t').encode()
   File "/usr/lib/python2.2/site-packages/email/Header.py", line 412, in 
encode
     newchunks += self._split(s, charset, targetlen, splitchars)
   File "/usr/lib/python2.2/site-packages/email/Header.py", line 297, in 
_split
     elen = charset.encoded_header_len(encoded)
   File "/usr/lib/python2.2/site-packages/email/Charset.py", line 341, 
in encoded_header_len
     return len(s)
TypeError: len() of unsized object

however, if I turn off the header wrapping in as_string (g = 
Generator(fp, maxheaderlen=0) the problem goes away.

yes, I have a ugly workaround or two for the problem but it still my 
opinion that this problem shouldn't happen.

The workarounds I have are hack the original code, derive from the 
original message code and overload the as_string method.  I gathered 
there is some magic one can use with generators that would be useful in 
fixing this problem but so far, that escapes me.  Enlightenment would be 
appreciated.

---eric




More information about the Email-SIG mailing list