Bullock, Howard A. wrote:
> I use MIME::Lite for sending email from my programs. If the mail server
> can not be contacted the following MIME::Lite code causes a fatal error
> aborting my process.
> 
> ### Create SMTP client:
> require Net::SMTP;
> my $smtp = MIME::Lite::SMTP->new(@args)
>     or Carp::croak("Failed to connect to mail server: $!\n");
> $smtp->mail($from)
>     or Carp::croak("SMTP MAIL command failed:
> $!\n".$smtp->message."\n");
> $smtp->to(@to_all)
>     or Carp::croak("SMTP RCPT command failed:
> $!\n".$smtp->message."\n");
> $smtp->data()
>     or Carp::croak("SMTP DATA command failed:
> $!\n".$smtp->message."\n");
> 
> 
> I tried to trap this issue in my code using "eval", but was
> unsuccessful.
> 
> if (eval {$msg->send}) {
>     print "message sent\n";
> }
> else {
>     print "Failed to send: [EMAIL PROTECTED]";
> }
> 
> Did I use the eval improperly or is there a better to prevent the
> stopping of my process?

Try something like this (you'll need to get your @args adjusted):

use strict;
use warnings;
use MIME::Lite;

my $message = "Sending test\n";

my $from_address = '[EMAIL PROTECTED]';
my $to_address = '[EMAIL PROTECTED]';
my $subject = 'yadda yadda yah';
my $message_body = $message;

MIME::Lite->send('smtp', 'mymailserver.mynetwork.com', Timeout => 60);

my $msg = MIME::Lite->new(
   From => $from_address,
   To => $to_address,
   Subject => $subject,
   Data => $message_body,
) or die "Error creating MIME body: $!";

eval { $msg->send; };
if ($@) {
    print "Failed to send: $! ($^E)";
} else {
    print "message sent\n";
}

__END__
_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to