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