[Email-SIG] fixing the current email module

R. David Murray rdmurray at bitdance.com
Thu Oct 8 21:55:18 CEST 2009


On Thu, 8 Oct 2009 at 15:49, Barry Warsaw wrote:
> On Oct 8, 2009, at 11:09 AM, Stephen J. Turnbull wrote:
>
>> Barry Warsaw writes:
>> 
>> > > > > from email import message_from_string
>> > > > > with open('/dev/urandom') as wire:
>> > ...   data = wire.read(1024)
>> > ...
>> 
>> # insert A
>> 
>> > > > > msg = message_from_string(data)
>> > > > > # number of headers
>> > ... len(msg)
>> > 0
>> > > > > len(msg.get_payload())
>> > 1024
>> > > > > msg.defects
>> > []
>> > 
>> > This actually makes perfect sense.  A message with no headers and a
>> > mass of 1024 bytes in its payload is RFC valid!
>> 
>> If you insert at A
>> 
>> > > > wire = "".join(chr(ord(ch) & 127) for ch in wire)
>> > > > # optional with reasonably high probability:
>> > > > wire = wire[0:512] + "\r\n" + wire[512:1024]
>> 
>> or similar.  Otherwise not. ;-)
>
> Right!  That makes it legal.
>
> What's interesting of course is that the parser can (and I submit, still 
> should) handle the stream even without that.

But it should be recording a couple defects in that case, right?

--David


More information about the Email-SIG mailing list