http://qs1969.pair.com?node_id=176027

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I retrieve the body of my message from an Oracle 8i LONGRAW column, the data being a text file previously inserted using the <input type="file"> form element. I'm then using a perl script to send the content via MIME::Lite:
$dbh->{LongReadLen} = 256 * 1024; ($body) = $dbh->selectrow_array("select content from $dtab where name += '$name'"); $body =~ s/\r/\n/g;
I then print out the body...
open (OF, ">body.txt"); print OF $body; close (OF);
I have all the details for sending the message, but it arrives without newlines as one loong message.
$msg = MIME::Lite->new( From => $from, To => $to, Subject => $subject, Type => 'text/html', Data => qq{ $body } ); MIME::Lite->send('smtp', 'smtpsvr.net, Timeout=>240); $msg->send();
I've tried most char substitions on $body such as:
s/\cM/\n/ s/\r\n/\n/
only s/\r/\n/ has any effect and only on the data written to the filehandle. Otherwise the body content is just one long string, no carriage returns! Strange one, perhaps the Monks can help?

Replies are listed 'Best First'.
Re: MIME::Lite, DBI LONGRAW's & newlines
by zakb (Pilgrim) on Jun 20, 2002 at 15:06 UTC

    I may be barking up the wrong tree, but since you're sending a HTML message, surely you should be substituting carriage returns with <br> tags?

    $body =~ s/\n/<br>/;
Re: MIME::Lite, DBI LONGRAW's & newlines
by gav^ (Curate) on Jun 20, 2002 at 15:39 UTC
    I'm pretty sure that zakb has the right idea.

    What does look odd though is: Data    => qq{ $body } Which just adds a space to the beginning and end of $body. I'm guessing that you don't want to do this and should just remove the qq{}.

    You might also look at HTML::FromText or HTML::TextToHTML.

    gav^

      Hi, I solved it by replacing 'text/html' with 'text' for the MIME::Lite invocation as follow: Type => 'text'