#!/usr/bin/perl ###################### # General Mail Form To Work With Any Fields # Created 6/9/95 Last Modified 6/11/95 # Version 1.0 # Define Variables $mailprog = '/usr/sbin/sendmail'; $date = `/bin/date`; chop ($date); ###################### # Necessary Fields in HTML Form: # recipient = specifies who mail is sent to # username = specifies the remote users email address for replies # realname = specifies the remote users real identity # subject = specifies what you want the subject of your mail to be # Print the Initial Output Heading print "Content-type: text/html\n\n"; # Get the input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split the name-value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # Stop people from using subshells to execute commands # Not a big deal when using sendmail, but very important # when using UCB mail (aka mailx). # $value =~ s/~!/ ~!/g; # Uncomment for debugging purposes # print "Setting $name to $value

"; $FORM{$name} = $value; } # Print Return HTML print "Thank You\n"; print "

Thank You For Filling Out This Form

\n"; print "Thank you for taking the time to fill out our my form."; print "Below is what you submitted.
\n"; # Open The Mail open (MAIL, "|$mailprog $FORM{'recipient'}") || die "Can't open $mailprog!\n"; print MAIL "From: $FORM{'username'} ($FORM{'realname'})\n"; print MAIL "Reply-To: $FORM{'username'} ($FORM{'realname'})\n"; print MAIL "To: $FORM{'recipient'}\n"; print MAIL "Subject: $FORM{'subject'}\n\n"; print MAIL "Below is the result of your feedback form. It was submitted by $FORM{'realname'} ($FORM{'username'} on $date\n"; print MAIL "--------------------------------------------------------------\n"; foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # Stop people from using subshells to execute commands # Not a big deal when using sendmail, but very important # when using UCB mail (aka mailx). # $value =~ s/~!/ ~!/g; # Uncomment for debugging purposes # print "Setting $name to $value

"; $FORM{$name} = $value; # Print the MAIL for each name value pair print MAIL "$name: $value\n"; print MAIL "____________________________________________\n\n"; # Print the Return HTML for each name value pair. print "$name = $value


\n"; } close (MAIL); print ""; # open a message to the remote client open (MAIL, "|$mailprog $FORM{'username'}") || die "Can't open $mailprog!\n"; print MAIL "To: $FORM{'username'} ($FORM{'realname'})\n"; print MAIL "Reply-To: $FORM{'recipient'}\n"; print MAIL "From: $FORM{'recipient'}\n"; print MAIL "Subject: $FORM{'subject'}\n\n"; # write out a customized response to the mail message print MAIL "Thanks for filling out my comics voting form."; print MAIL " I will post the results soon. Tell all your friends about it, too."; print MAIL " Peace!"; # close the message close (MAIL);