[Email-SIG] fixing the current email module
Stephen J. Turnbull
stephen at xemacs.org
Thu Oct 8 17:31:43 CEST 2009
Oleg Broytman writes:
> > where not. By "punt" I mean return a special object containing as
> > much of the meta data for an object as it could recover, along with
> > the data itself as a blob.
> The special object is an instance of an exception class ;)
It could be, but it will be returned with return, not raise. ;)
> > I think (== hope) that this will sufficiently localize the issues
> > that even though only AttributeError would even be raised, it
> > will be obvious what went wrong.
> Not exactly. One can see an AttributeError, but what was the
> cause? why a parser has created a broken object? AttributeError
> doesn't preserve information from parser.
Who said it wouldn't? Granted, I didn't say it would, but in my
Content-Type: text/html; parseable=no
example, I would expect the object returned to reflect that
structure. In particular the object representing the second MIME part
would indeed possess a valid Header member. I would also attach the
original data (which in the case of a missing separator might very
well overrun into other parts, etc), but it would *not* be accessible
via the usual methods (eg, definitely not from .flatten()).
So in fact it's not clear to me that you could ask for more
information than that.
> > I can think of no input for which the parser should *ever* throw an
> > exception.
> Are you saying that even a random garbage would be parsed to a Message
> of some kind? No headers, a single unparsed body?..
As long as it contains no NULs or high-bit-set octets, and is
separated into at least two parts, each less than 998 characters long,
by a CRLF, yes, I would definitely expect that an otherwise randomly
generated string would be parsed to a Message.
This Message should not be sendable because RFC 5322 requires the
presence of a From and a Date. However, if you were implementing a
sendmail-compatible MTA or LDA, you might very well wish to accept
such a thing on stdin, parse it to a Message, and then default the
>From and Date header fields appropriately, and add a Message-ID header
field. I would, anyway, wouldn't you?
Ah, yes, that's another use case, isn't it?!
More information about the Email-SIG