Carsten Riegert: Formmailer aus Selfhtml

Hallo, hier einmal die Anfrage eines absoluten Perlneulings. Ich bin neulich über die Seite mit dem FormmailerBeisoiel gestolpert. HAbe es gleich ausprobiert für meine Website. Ich probiere die Scripte lokal aus mit dem Server Sambar52. Leider ist bei mir keine Funktion zu erkennen, für sachdienliche hinweise wär ich sehr dankbar. Anbei die entsprechenden Listings.

Gruss und frohes Neues noch

Carsten

-----

Datei selfmai.pl im cgi-bin verzeichnis:

#!d:/sambar52/perl/perl.exe

-------> SMTP-Programm zum Versenden der Mail:

$Sendmail_Prog = "d:/sambar52/bin/sendmail.exe";

-------> Modul fr CGI-Scripts einbinden:

use CGI;

-------> Modul fr CGI-Scripts zum Einlesen der Formulardaten anwenden:

$query = new CGI;
@names = $query->param;

-------> interne Daten aus den erwarteten hidden-Feldern auslesen:

$delimiter = $query->param('delimiter');  # ---> Begrenzerzeichen zwischen name und value
$mailto = $query->param('mailto');        # ---> Empfngeradresse
$returnhtml = $query->param('return');    # ---> URL fr Dankeseite
$subject = $query->param('subject');      # ---> E-Mail-Subject

-------> Text der E-Mail aus den Formulardaten ermitteln:

$mailtext = "";
foreach(@names) {
  $name = $_;
  @values = "";
  @values = $query->param($name);
  if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
    foreach $value (@values) {
      $mailtext = $mailtext.$name;
      $mailtext = $mailtext.$delimiter;
      $mailtext = $mailtext.$value."\n";
    }
  }
}

-------> E-Mail versenden:

open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);

-------> Dankeseite an Browser senden:

print "Location: $returnhtml\n\n";

------

formularseite im docs verzeichnis:

#!d:/sambar52/perl/perl.exe

-------> SMTP-Programm zum Versenden der Mail:

$Sendmail_Prog = "d:/sambar52/bin/sendmail.exe";

-------> Modul fr CGI-Scripts einbinden:

use CGI;

-------> Modul fr CGI-Scripts zum Einlesen der Formulardaten anwenden:

$query = new CGI;
@names = $query->param;

-------> interne Daten aus den erwarteten hidden-Feldern auslesen:

$delimiter = $query->param('delimiter');  # ---> Begrenzerzeichen zwischen name und value
$mailto = $query->param('mailto');        # ---> Empfngeradresse
$returnhtml = $query->param('return');    # ---> URL fr Dankeseite
$subject = $query->param('subject');      # ---> E-Mail-Subject

-------> Text der E-Mail aus den Formulardaten ermitteln:

$mailtext = "";
foreach(@names) {
  $name = $_;
  @values = "";
  @values = $query->param($name);
  if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
    foreach $value (@values) {
      $mailtext = $mailtext.$name;
      $mailtext = $mailtext.$delimiter;
      $mailtext = $mailtext.$value."\n";
    }
  }
}

-------> E-Mail versenden:

open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);

-------> Dankeseite an Browser senden:

print "Location: $returnhtml\n\n";

  1. hi,

    -------> Dankeseite an Browser senden:

    print "Location: $returnhtml\n\n";

    das funktioniert nicht auf jedem Server. Besser ists so:

    Redirection

    sub redir{
            my $url = shift;
            print "Status: 302 Moved\n";
            print "location: $url\n\n";
    }

    Siehe auch http://i-netlab.de/hints/redirect.html

    Rolf