#!/usr/bin/perl use strict; use CGI qw(cgi); my $cgi = new CGI; my $to = $cgi->param('TO'); my $name = $cgi->param('NAME'); my $email = $cgi->param('EMAIL'); my $url = $cgi->param('URL'); my $subject = $cgi->param('SUBJECT'); my $message = $cgi->param('MESSAGE'); # Check for Errors my @errors = (); if($message eq "") { push @errors, "No message text.\n"; } unless($to =~ /^\S+?\@\S+?\.\S+?$/) { push @errors, "Invalid recipient specified.\n"; } # if($name eq "") { push @errors, "No Name.\n"; } unless($email eq "") { unless($email =~ /\S+?\@\S+/o) { push @errors, "Invalid email address.\n"; } } unless($url eq "") { unless($url =~ /^http\:\/\/\S+/) { push @errors, "Invalid URL.\n"; } } unless($#errors == -1) { print $cgi->header; &error(@errors); die; } else { open (MAIL, "|/usr/lib/sendmail -t $to") or error("Sorry, cannot send mail!"); print MAIL "From: $name <$email>\n"; print MAIL "To: $to\n"; print MAIL "Subject: $subject\n\n"; print MAIL "$message\n\n"; print MAIL "Client Environment:\n\n"; print MAIL "CGI PATH:", $cgi->url(-absolute=>1), "\n"; print MAIL "REFERER PAGE:", $cgi->referer(), "\n"; print MAIL "FROM HOST:", $cgi->remote_host(), "\n"; print MAIL "BROWSER:", $cgi->user_agent(), "\n"; close MAIL; ### Print a thank-you page print $cgi->header(-expires=>'now'); print<<"XXX"; <HTML><HEAD><TITLE>Thanks for the mail</TITLE></HEAD> <BODY BGCOLOR=white><TABLE WIDTH=100%><TR><TD VALIGN=top BGCOLOR=#eeeeee> Thanks, your message to $to XXX if($subject ne "") { print "regarding $subject "; } print " has been sent.<P>"; print " <A HREF=\"", $cgi->referer(), "\"><B>Click here to return</B></A>"; print "</TD></TH></TABLE></BODY></HTML>"; } sub error { my @errors = @_; print<<"ENDX"; <HTML><HEAD><TITLE>Feedback Error</TITLE> </HEAD> <BODY> Your message could not be send because of the following errors... <OL> ENDX foreach $_ (@errors) { print "<LI>", $_; } print "<A HREF=\"", $MAIN::cgi->referer(), "\">Return</A>"; print "</BODY></HTML>"; }