[ python-Bugs-794458 ] email bug with message/rfc822

SourceForge.net noreply at sourceforge.net
Fri Nov 21 15:42:57 EST 2003


Bugs item #794458, was opened at 2003-08-24 23:17
Message generated for change (Comment added) made by bwarsaw
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=794458&group_id=5470

Category: Python Library
Group: None
>Status: Closed
>Resolution: Out of Date
Priority: 5
Submitted By: Stuart D. Gathman (customdesigned)
Assigned to: Barry A. Warsaw (bwarsaw)
Summary: email bug with message/rfc822

Initial Comment:
Attached is a test message that the email module can't
even read in andd write back out.  It drops a whole
section of headers for the message/rfc822 part.  The
old email modules handle this message correctly.

Let me clarify the problem with a short test:

------te.py--------
import email
import sys

msg = email.message_from_file(sys.stdin)
sys.stdout.write(msg.as_string())
-------------------
$ python2 te.py <test8 >test8.out
$ diff test8 test8.out
.... lots of differences that shouldn't be there ....


----------------------------------------------------------------------

>Comment By: Barry A. Warsaw (bwarsaw)
Date: 2003-11-21 15:42

Message:
Logged In: YES 
user_id=12800

I believe this bug is out of date.  When I tried this in
Python 2.3.2, the only differences between the original file
and the outputted file are in whitespace and wrapped long
lines.  That's not unexpected.  You could eliminate even
these differences by instantiating your own Generator class
and using its .flatten() method, rather than relying on the
msg.as_string() convenience.

----------------------------------------------------------------------

Comment By: Stuart D. Gathman (customdesigned)
Date: 2003-08-25 22:48

Message:
Logged In: YES 
user_id=142072

Here is a fix for this bug.  The problem is that the message
attachment is not being decoded before parsing.

*** Parser.py   Mon Aug 25 22:43:34 2003
--- /usr/lib/python2.2/email/Parser.py  Tue Nov 12 16:50:20 2002
***************
*** 249,262 ****
          elif container.get_main_type() == 'message':
              # Create a container for the payload, but
watch out for there not
              # being any headers left
-             container.set_payload(fp.read())
-           fp = StringIO(container.get_payload(decode=True))
              try:
                  msg = self.parse(fp)
              except Errors.HeaderParseError:
                  msg = self._class()
                  self._parsebody(msg, fp)
!             container.set_payload([msg])
          else:
              container.set_payload(fp.read())
  
--- 249,260 ----
          elif container.get_main_type() == 'message':
              # Create a container for the payload, but
watch out for there not
              # being any headers left
              try:
                  msg = self.parse(fp)
              except Errors.HeaderParseError:
                  msg = self._class()
                  self._parsebody(msg, fp)
!             container.attach(msg)
          else:
              container.set_payload(fp.read())
  


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=794458&group_id=5470



More information about the Python-bugs-list mailing list