* Jason Purdy <[EMAIL PROTECTED]> [2007-09-10T09:17:07]
> We use MIME::Lite here a lot w/o any problems and certainly without 
> thinking it's horrendous.  I will say that we don't do a whole lot of 
> email volume, but there's something about its API that resonates with my 
> style of coding, moreso than the alternatives you mentioned below.

It has lots of insane subtle bugs that won't bite you for a long time, but when
they do, the insanity will be ... um ... insane.

Here's a good one:  a MIME message may not have a line longer than 999
characters before the CRLF.  How does MIME::Lite solve this?  It silently
truncates lines at 990 characters.

The point isn't, "So fix that!"  It's that the module is 3500+ lines of such
code, basically negligent around the edges, so that edge cases lead not to
exceptions, but totally crazy failure modes.

I'm fixing these bugs as I get around to it, but there are a lot of better
options, and I'm just one guy.  Trying to get people to volunteer to improve
Mail:: and Email:: code has been a real losing bet.  If you want to help,
please join the PEP (emailproject.perl.org) mailing list and join in.  There's
also irc.perl.org #email.

> I actually evaluated the different options over 5 years ago[1] and while 
> it seems apropos to update my review, after looking at the API docs of 
> the modules you mention, I still come to the same conclusion.

The API of MIME::Lite isn't that bad, apart from a lousy implementation of
sending, and conflation of the message and sending interface.  It's the MIME
implementation and the guts.

> I like to create an object, optionally with some config data, be able to 
> later set the config date and then call a method upon the object to get 
> something done.

Sure.

> Looking at Email::Simple and Email::MIME: those both look like parsing 
> emails.  So that leaves Email::Send and Email::Stuff.

Please see Email::Simple::Creator and Email::MIME::Creator.  Seriously, though,
if you don't know anything about them, why are you trying to say whether
they're appropriate?

> Email::Send doesn't have parameterized configuration, which just seems 
> odd to me.  You put together the complete message in one big string and 
> then Email::Send magically does the rest.

Yes, you CAN do that.  Non-crazy people, however, use Email::*::Creator and
then pass the Email::Simple-derived object to Email::Send.

Email::Simple (and subclasses) and Email::Send divide the concerns into
"representing a message" and "sending a message."  Email::Send has its share of
problems, and they're being addressed, but requiring you to build a message
string is not one of them.

Again, your assessment here seems to be based on a two minute skim of the
documentation, not a serious amount of work with the modules either as a user
or a maintainer.

Maybe this just means that Email::Simple needs a big SEE ALSO section, or the
like.

> Email::Stuff does have parameterized configuration, but it seems to 
> chain it all together, which, again, seems odd to me.

It combines a lot of other Email:: modules to give you a simple (if quirky)
interface to many of the small, special-purpose modules in Email::.

> If you're maintaining MIME::Lite, can't you improve it so it's not 
> horrendous?  Or provide the same API styles for better modules?  There's 
> something to be said about ugly code that's easy to develop with vs. 
> beautiful code that makes you work harder.

Yes, I could, but I don't see the point.  Email::Simple (etc) and Mail::Message
provide good APIs, if you give them a reasonable look.  I could try to make it
possible for Email::Simple and MIME::Lite to compete with one another, but that
seems like a fool's errand.  I'd rather pick the one that is not currently
brimming with insanity within and make that the best tool.

Of course, patches welcome.

-- 
rjbs

---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.erlbaum.net/
              http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to