PERL SMTP e-mail help

gdsoccer11's Avatar, Join Date: Jul 2008
Newbie Member
Hey all,

I've written a working smtp email script using the NET::SMTP module the only problem is that whenever I use a \n in the message body it fails to place it in the email. Here is the script:

Code:
use Data::Dumper;
use Net::SMTP;
use strict;

my $to = 'to';
my $from = 'your name';
my $subject = "subject";
my $greeting = "An error has occured";
my $message = "Error Stats: blah blah blah /n
                          more blah blah";
my $smtp = Net::SMTP->new('xxx.xxx.x.xxx');    
$smtp->mail('me@myaddr.com');               
my $status = $smtp->recipient($to);
$smtp->data();
$smtp->datasend("From: $from\n");
$smtp->datasend("To: $to\n");
$smtp->datasend("Subject: $subject\n");
$smtp->datasend("Content-Type: text/html; charset=\"us-ascii\"\n");
$smtp->datasend("\n");
$smtp->datasend("$greeting\n\n");
$smtp->datasend("\n");
$smtp->datasend("$message");
$smtp->datasend("\n");
$smtp->dataend();
$smtp->quit;
now like I said that succesfull sends the e-mail if everything is filled in but none of my new lines (and I have like 6 of them) are showing up in the message body.

Any thoughts?
naveen's Avatar
Go4Expert Member
I see that you've given content type to be text-html, in which case, the newline is defined by the <br> tag and not \n. For \n to be converted to a new line, you need the content type of the email to be set to text-plain.

Try it out and see if it makes any difference. The rest of your script looks fine.

HTH
Naveen
pradeep's Avatar, Join Date: Apr 2005
Team Leader
or try this!

Code: perl
$message =~ s/\n/<br\/>/g;

But Naveen's suggestion is the best!
ballroot's Avatar, Join Date: Oct 2008
Newbie Member
Thanks, works for me too.