http://qs321.pair.com?node_id=843189


in reply to Net::SMTP Problem

See eval and use something like if( !eval{blarg()} ) { warn "hrm: $@" }. Also, consider something like Email::Valid to avoid the send step on bad addresses.

Replies are listed 'Best First'.
Re^2: Net::SMTP Problem
by joshe (Initiate) on Jun 04, 2010 at 19:22 UTC

    Dear jettero:

    Thanks for your fast reply, i am a completly monkey and newbie, can you give a example please

    thanks

      Below example shows how to incorporate eval into the code you already have. jettero's method to wrap the subroutine gives you the added benefit of trapping other errors as well. But if you are just concerned about not failing for bad domains the below code (untested) should work.

      sub sendtextemail { use MIME::Lite; $from = "\"$from_name\" <$from_email>\n"; $sender = "\<$reply_1>\n"; $reply = "\"$from_name\" <$from_email>\n"; $to = "\"$fname\" <$email>\n"; $unsubscribe .="<$shortlink/r.cgi?s=$subid&a=$username&k=$valkey>\n"; use Net::SMTP; MIME::Lite->send('smtp', 'localhost'); $mailmsg = MIME::Lite->new( From => $from, 'Reply-to' => $reply, Sender => $sender, To => $to, Subject => $subjectline, Type => "text/plain; charset=iso-8859-1", "X-Identifier:" => "$subid-$username\n", "X-Ip:" => "$ip\n", Data => "$message", ); $mailmsg->add("Complaints-To" => "$emailabuse\n"); eval { $mailmsg->send; }; if ($@) { print "[Error] Your email send errored: [$@]\n"; } }

        Thank you. I have tried but not working