I thought I'd have a quick run through Email::Simple::Creator to clean up some
of its foibles.  Here are the ones that make me wonder...

The changelog says: 

  1.3 2004-07-05
  Create a message using its local crlf (Casey West).
  Include timezone info in the Date header (Steffen Goeldner).

So, create a message using its local CRLF, but:

  $CRLF    = "\x0a\x0d";
  sub _add_to_header {
      my ($class, $header, $key, $value) = @_;
      return unless $value;
      ${$header} .= join(": ", $key, $value) . $CRLF;
  }

A string is built up with _add_to_header, then passed to Email::Simple->new.
Since it will end with a single $CRLF, the doubled-crlf detector will not
determine that \x0a\x0d is the crlf in question, and will, instead, use "\n"

The header, though, will actually be line-ended with CRLF.  Email::Simple can
parse this properly, but it seems Wrong.  It also has nothing to do with what
ends up in the body, which is generally passed in as a string with its own,
uninspected linefeeds.

I'm going to do some testing, but I think the right thing to do is to try to
generate a header with CRLF dividing the headers and dividing the head from the
body.  I am not excited at the prospect of re-line-breaking the body, though.

Beyond vague feelings of The Right Thing, is there a strong practical reason
for any particular behavior?

-- 
rjbs

Reply via email to