#!/usr/bin/perl
use strict;
#
# Mail-Formular fuer die Webseite
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Aufruf: /cgi-bin/fmail.cgi?recipient=<Name>
#
# Dem User wir ein Formular zur Texteingabe angeboten, das dann
# an <Name>@Maildomain geschickt wird. So erscheint die Mailadresse
# nirgends auf der Webseite (Spam-Schutz).
#
# Folgende Variablen muessen geaendert werden

# Mailprogramm (in der Regel sendmail -oi -t)
my $mailprog = '/usr/lib/sendmail -oi -t';

# Absenderadresse der Mail
my $From = 'Webformular@ee.fhm.edu';

# URL der Homepage. Formulare werden mit 
# <FORM METHOD=POST ACTION="$homeurl$script_url"> angesprochen.
my $homeurl = 'http://www.ee.fhm.edu';

# Maildomain: der '@' und alles, was dahinter kommt
my $Maildomain = 'ee.fhm.edu';

# Ab hier muss eigentlich nichts mehr geandert werden
#######################################################################

my %FORM = ();
my @pairs;
my $buffer = '';
my $recipient = '';
my $comments = '';
my $sender = '';
my $script_url = $ENV{'SCRIPT_NAME'};

# Dokumenten-Kopf
print "Content-type: text/html\n\n";
print qq~
  <Html>
  <Head>
  <Title>E-Mail-Formular</Title>
  </Head>
  <Body>
  ~;

# Get the input
if ($ENV{'REQUEST_METHOD'} eq 'GET') {@pairs = split(/&/, $ENV{'QUERY_STRING'});}
elsif ($ENV{'REQUEST_METHOD'} eq 'POST')
  {
  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
  @pairs = split(/&/, $buffer);
  }
foreach my $pair (@pairs)
  {
  my ($name, $value) = split(/=/, $pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $FORM{$name} = $value;
  }
$recipient = $FORM{'recipient'} if (defined($FORM{'recipient'}));
$comments = $FORM{'comments'} if (defined($FORM{'comments'}));
$sender = $FORM{'username'} .' (' . $FORM{'realname'} . ')';

# Wenn kein Empfaenger angegeben, falscher Aufruf
if ($recipient eq '')
  {
  print qq~
  <H2>Fehler</H2>
  Kein Empf&auml;nger angegeben.
  </BODY>
  </HTML>
  ~;
  }
# Falls die Antwort leer ist, Formular ausgeben
elsif ($comments eq '')
  {
  print qq~
  <H2>E-Mail-Nachricht versenden</H2>
  Mit diesem Formular k&ouml;nnen Sie eine E-Mail an $recipient
  schicken.
  <P>
  <FORM method=POST action="$homeurl$script_url">
  <TABLE BORDER=0 CELLPADDING=5>
  <TR><TD>Ihre E-Mail-Adresse: </TD><TD><INPUT TYPE="text" NAME="username"></TD></TR>
  <TR><TD>Ihr Name: </TD><TD><INPUT TYPE="text" NAME="realname"></TD></TR>
  </TABLE><P>
  Hier bitte Ihren Text eingeben:<BR>
  <TEXTAREA NAME="comments" ROWS=20 COLS=60>
  </TEXTAREA>
  <P>
  <INPUT TYPE="hidden" Name="recipient" VALUE="$recipient">
  <INPUT TYPE="submit" VALUE="E-Mail versenden">
  <INPUT TYPE="reset" VALUE="Eingabe l&ouml;schen"><p>
  </FORM>
  </BODY>
  </HTML>
  ~;
  }
else
  {
  print qq~
  <H2>Mail wurde verschickt</H2>
  Vielen Dank f&uuml;r Ihren Kommentar. Er wird per E-Mail
  an $recipient geschickt!
  <P>
  <a href="javascript:history.back()">Zur&uuml;ck<P>
  </Body>
  </Html>
  ~;

  # Jetzt E-Mail an $recipient senden, erst Adresse basteln
  $recipient = $recipient . '@' . $Maildomain;
  open (MAIL, "|$mailprog") || die "Can't open $mailprog!\n";
  print MAIL "From: $From\n";
  print MAIL "To: $recipient\n";
  print MAIL "Subject: Formular-Mail via Webseite\n";
  print MAIL "Mime-Version: 1.0\n";
  print MAIL "Content-Type: text/plain; charset=iso-8859-1\n";
  print MAIL "Content-Transfer-Encoding: 8bit\n";
  print MAIL "Reply-to: $sender\n";
  print MAIL "\n";
  print MAIL "$sender schrieb:\n\n";
  print MAIL "$comments";
  close (MAIL);
  }
