2001-04-16 Edit by Corion : Changed title from "MORE COMPACT TO SEND EMAIL"
use IO::Socket; sub send_mail { my %value = @_ ; my %res = ( 'error' => '' , 'comment' => "Open Socket\n" , 'status' => 0 ) ; my @work = ( [ '' , '220' , 'Commun +ication with SMTP' ] , [ 'HELO robot<end>' , '250' , 'Hello +Serveur' ] , [ 'MAIL FROM: <insert:return-path><end>' , '250' , 'Insert + RETURN PATH adress' ] , [ 'RCPT TO: <insert:to><end>' , '250' , 'Insert + RECIENT adress' ] , [ 'DATA<end>' , '354' , 'Ask to + send DATA' ] , [ '<insert:message>' , '250' , 'Send D +ATA' ] , [ 'QUIT<end>' , '221' , 'Ask to + QUIT' ] ); $|=1; my $result = 0 ; my $reponse ; my $serveur = IO::Socket::INET->new( PeerAddr => $value{smtp +} , PeerPort => '25' , Proto => 'tcp' , Type => SOCK_STREAM , Timeout => 15 ) or return ( 'error' => "Error when open Socket -($!)-\n" , 'statut' => 0 , 'comment' => '' ); for (@work) { my @element = @$_ ; if ( $element[0] ne '' ) { $element[0] =~ s/<end>/\r\n/sgi; $element[0] =~ s/<insert:([^>]+?)>/$value{$1}/sgi ; print $serveur $element[0]; } $reponse = <$serveur>; if ($reponse =~ /^$element[1]/sgi) { $res{'comment'}.= $element[2]."\n"; } else { $res{error} = "error when $element[2] -($!)- " ; return %res ; } } $res{'statut'} = 1 ; return %res; } %test = ( 'return-path' => 'automatic_traitment@your_domain.com' , 'to' => 'my_friend@his_home.com' , 'smtp' => 'localhost' , 'message' => "To: Friend <my_friend@his_home.com> from: Me <my_own_adress@your_domain.com> Subject: Test on line TEST ON LINE . " ); send_mail ( %test ) ;
In reply to More compact to send email by iguane
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |