#!/usr/bin/perl # author: Jason Quek # company: GT Designs & Concepts # e-mail: jason@jumpsql.com # program: JumpFormMail $thisfile = 'jumpformmail.cgi'; $mailprog = '/usr/lib/sendmail'; $domain = 'domain.com'; $redirection_method = 1; # 1 using CGI->redirect module # 2 using HTTP->META->Refresh method read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); undef @send; undef @send_values; foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/~!/ ~!/g; if ($name =~ /^send_/i) { push @send, $name; push @send_values, $value; } $FORM{$name} = $value; } unless ($ENV{'HTTP_REFERER'} =~ /$domain/i) { print "Content-type: text/html", "\n\n"; #This line must always be present print "domain not allowed"; die; } unless ($FORM{'webmaster_email'} =~ /$domain/i) { print "Content-type: text/html", "\n\n"; #This line must always be present print "webmaster_email not allowed"; die; } if (($FORM{'webmaster_email'}) && ($FORM{'subject'}) && ($FORM{'confirmation_page'})) { # ------------------ sends email to webmaster ----------------------- open (MAIL, "|$mailprog -oi -t -f $FORM{'webmaster_email'}") || print "Can't open $mailprog!\n"; print MAIL "To: $FORM{'webmaster_email'}\n"; print MAIL "Reply-to: $FORM{'webmaster_email'}\n"; print MAIL "Subject: $FORM{'subject'}\n"; print MAIL "From: $FORM{'webmaster_email'}\n\n"; foreach (@send) { $i = $_; $i =~ s/^send_//; print MAIL "$i: $FORM{$_}\n\n"; } close (MAIL); # ----------------------------------------------------------------------------------- # --------- write values to database ---------- if ($FORM{'database'}) { $write_line = join(' ', @send_values); # sysopen (DATA, "$FORM{'database'}", O_WRONLY | O_TRUNC | O_CREAT) || die "cannot open database: $!"; open (DATA, ">>$FORM{'database'}") || print "cannot open database: $!"; flock (DATA, 2); print DATA "$write_line\n"; close (DATA); } # -------------------------------------------------------- # ---------- redirect to confirmation page ---------- if ($redirection_method == 1) { use CGI; $query = new CGI; print $query->redirect($FORM{'confirmation_page'}); } else { print "Content-type: text/html", "\n\n"; #This line must always be present print " Redirecting... "; } # --------------------------------------------------------------- } else { print "Content-type: text/html", "\n\n"; #This line must always be present print " Oops!

You must specify the webmaster_email, subject, confirmation_page in your form, like this:

<INPUT TYPE="hidden" NAME="webmaster_email" VALUE="email\@domain.com">
<INPUT TYPE="hidden" NAME="subject" VALUE="Subject of E-mail">
<INPUT TYPE="hidden" NAME="confirmation_page" VALUE="http://www.domain.com">
<INPUT TYPE="hidden" NAME="database" VALUE="database.txt">
"; }