Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: how do i send an email to someone specified by the user?

by kilinrax (Deacon)
on Nov 15, 2000 at 21:36 UTC ( [id://41805]=note: print w/replies, xml ) Need Help??


in reply to how do i send an email to someone specified by the user?

Though I can't be sure (You're question was a bit garbled), it sounds to me you want something like this:
#!/usr/bin/perl -wT eval 'exec perl -wT -S $0 ${1+"$@"}' if 0; # not running under some shell require 5; use strict; use CGI; use URI::URL; use Mail::Mailer; use vars qw( @errors ); my $subject = "Automated Message From $0"; my $mailtext; my $forwardurl = '/thankyou.html'; my $query = new CGI; my @params = $query->param; my $email = $query->param('email'); my $mailto = $query->param('mailto'); # check email address is valid checkemail($email) if $email; # construct the message for whoever's being sent the form my $param; my $value; my @values; foreach $param(@params) { @values = $query->param($param); if ($query->param('other_'.$param)) { foreach $value (@values) { if ($value eq 'other') { push (@values, $query->param('other_'.$param)); last; } } } @values = grep { $_ ne 'other' } @values; ($value = join(', ', @values)) && ($mailtext .= "\u\L$param\E: $valu +e\n"); } if (@errors) { $mailtext .= 'IMPORTANT! The following error'. (@errors>1 ? 's were' + : ' was') ." encountered during execution:\n". join("\n",@errors). " +\n\n"; } sendmail($email, $mailto, $subject, $mailtext); # send off the mail print "Location: $forwardurl\n\n"; # forward the user to + a 'thank you' page exit; sub sendmail { my ($from, $to, $subject, $body) = @_; my $mailer; eval { $mailer = Mail::Mailer->new('sendmail'); }; if ($@) { push (@errors, "Couldn't send mail: $@"); return 0; } else { $mailer->open({ From => $from, To => $to, Subject => $subject }); print $mailer $body; if (close ($mailer)) { return 1; } else { push (@errors, "Couldn't close mailer: $!"); return 0; } } } sub checkemail{ my $addr = shift; my $validmail; return 0 unless eval { unless ($validmail = Email::Valid->address( -address => $addr, -mxcheck => 1 )) { push (@errors, "address failed $Email::Valid::Details check."); if ($Email::Valid::Details eq 'rfc822') { push (@errors, "$addr is unlikely to be a valid email address" +); } elsif ($Email::Valid::Details eq 'mx') { (my $domain = $addr) =~ s/^[^\@]+\@//; push (@errors, "$domain does not seem to have a mailserver"); } return 0; } }; if ($@) { push (@errors, "An error was encountered: $@"); return 0; } return 1; }
This script will mail all the data in the form to the address given in the form field 'mailto'. If you want the address mailed to to be fixed, simply set $mailto to that address.
Hope this helps ;-)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://41805]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (8)
As of 2024-04-19 08:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found