Benno: Wie "option value" aus <SELECT>-Feld auslesen.

Beitrag lesen

tja, ich würde sagen so, dass es den wert für $recipient dynamisch aus den übergebenen daten übernimmt ... (mehr ist ohne dein script zu kennen nicht dazu zu sagen.)

Daran soll es nicht scheitern:

#! /usr/bin/perl

Pfad zum Perl-Interpreter, abhängig vom jeweiligen Hoster

print "Content-type: text/html\n\n";

cgi-lib.pl und mail-lib.pl laden

require "cgi-lib.pl";
  &ReadParse(*form_data);
  require "mail-lib.pl";

Anpassen: Die Seite, zu der es anschließend zurück geht und

#           die E-Mail-Adresse, an die geschickt wird.
  $backurl = "http://www.xyz.de";
  $recipient = 'beispiel@test.de';

Beim ersten Aufruf oder nach unvollständiger Eingabe Formular ausgeben

if ($form_data{'action'} eq "add" || $ENV{'REQUEST_METHOD'} eq "GET")
    {
    print <<"    end_of_html";
    <HTML><HEAD><TITLE>Test</TITLE>
<link rel="stylesheet" href="../stylesheets/standard.css">
</HEAD>
<BODY>
        <H1>Kontakt-Formular</H1>
    <P>
        Bitte füllen Sie das untenstehende Formular vollständig aus.
    end_of_html

&output_add_form;
    exit;
    }

Sonst die übergeben Daten zur E-Mail verarbeiten

@form_variables = keys (%form_data);
  foreach $field (@form_variables)
    {
    if ($form_data{$field} eq "" )
      {
      &missing_required_field_data();
      }
    }

#######################################################################
#                    E-Mail an $recipient senden                      #
#######################################################################

$email_of_guest = "$form_data{'email'}";
    $email_subject = "$form_data{'subj'}";

$email_body .= "Sie haben eine neue E-Mail erhalten:\n\n";
    $email_body .= "------------------------------------\n";
    $email_body .= "Name: $form_data{'realname'}\n";
    $email_body .="Absender: <$form_data{'email'}>\n";
    $email_body .="Betreff: <$form_data{'subj'}>\n\n";
    $email_body .= "$form_data{'content'}\n";

Benutzt die send_mail subroutine aus mail-lib.pl library

Der Server muss sendmail unterstützen und das Aufrufen

aus einem CGI-Skript gestatten

&send_mail("$email_of_guest", "$recipient",
               "$email_subject", "$email_body");

#######################################################################
#             Bestätigungsseite mit Link zurück ausgeben              #
#######################################################################

print <<"  end_of_html";
  <HTML><HEAD><TITLE>Test</TITLE>
<link rel="stylesheet" href="../stylesheets/standard.css">
</HEAD><BODY>
    <H1>Kontakt-Formular</H1>

</body></html>\n
  end_of_html
  exit;

#######################################################################
#                      Eingabe war unvollständig                      #
#######################################################################

sub missing_required_field_data
    {
    print <<"    end_of_html";
    <HTML><HEAD><TITLE>Test</TITLE>
<link rel="stylesheet" href="../stylesheets/standard.css">
</HEAD><BODY>
    <H1>Kontakt-Formular</H1>
 <P>Bitte füllen Sie das untenstehende Formular <span class="form">vollständig</span> aus!
    end_of_html
    &output_add_form;
    exit;
    }

#######################################################################
#                     E-Mail-Formular ausgeben
#######################################################################

sub output_add_form
    {
    print <<"    end_of_html";
<DIV class="form3">
    <FORM METHOD = "POST" ACTION = "datenpost.cgi" style="width:95%" name="kontakt">
<TABLE class="form3">
    <TR> <TH class="form3">Bereich:</TH><TD class="form3">
 <select size="1" name="bereich">
<option value="otto@test.de" Selected>Otto
<option value="rudi@test.de">Rudi
<option value="karl@test.de">Karl
<option value="hans@test.de">Hans
<option value="heiner@test.de">Heiner
</select></TD></TR><TR>

<TH class="form3">Name:</TH>
    <TD class="form3"><INPUT TYPE = "text" NAME = "realname" SIZE = "40"
        VALUE = "$form_data{'realname'}"></TD>
    </TR><TR>
    <TH class="form3">E-Mail:</TH>
    <TD class="form3"><INPUT TYPE = "text" NAME = "email" SIZE = "40"
               VALUE = "$form_data{'email'}"></TD>
    </TR><TR>
    <TH class="form3">Betreff:</TH>
    <TD class="form3"><INPUT TYPE = "text" NAME = "subj" SIZE = "50"
               VALUE = "(( Ihr Anliegen ))"></TD>
    </TR><TR>
    <TH class="form3">Nachricht:</TH>
    <TD class="form3"><TEXTAREA NAME = "content" COLS = "60" ROWS = "8">
    $form_data{'content'}
    </TEXTAREA></TD>
    </TR></TABLE>
    <CENTER>
    <INPUT TYPE = "submit" value=" Absenden ">

<input type="reset" value="Löschen"></th>

</CENTER>
    </FORM></DIV>
    <P>
    <A HREF = "$backurl"><SPAN class="form3">Zur Formularseite</SPAN>

<P ALIGN=Left>

</BODY>
    </HTML>
    end_of_html
    }

aber aufpassen, eine abfrage ob die emailadresse auchwirklich zu den von dir "erlaubten" gehört solltest du trotzdem noch einbauen, andernfalls lässt sich dein scriptnämlich prima zum zuspammen anderer emailadressen missbrauchen.

Könnte man das vermeiden, indem man die E-Mail-Adresse zusammen bastelt, etwa so
$recipient_vorne = option.value.selected
$recipient = recipient_vorne && "@test.de"