Philipp Hasenfratz: CGI Formularweiterleitung Sendmail und dann Feedbackbestaetigung

Beitrag lesen

Halihallo Michael

Ich glaube mein erster Eintrag ist nicht angekommen... hab wohl was falsch gemacht. :-(

Link bitte.

Daten auslesen

use CGI;

Mailparameter festlegen für an sich selbst senden

@recipient='Webmaster@xxxxxxxxxxxxxx.de';

Hier sollte eine runde Klammer stehen, nicht aber ...

@message=($FORM{'kommentar'});

...hier, denn die Formulardaten sind nunmal Skalare, auch wenn sie mehrzeilig sind.

$myaddress=($FORM{'email'});
$realname=($FORM{'name'});
$realname1=($FORM{'organisation'});
$realname2=($FORM{'telefon'});
$returnhtml='http://www.xxxxxxxxxxxxx.de/feedbackbestaetigung.htm'

keine runden Klammern bei skalaren Werten. Runde Klammern sind für Arrays und Hashes zu verwenden.

Mail schreiben und an sich selbst senden

open (MAIL, "|sendmail.exe -t");
print MAIL "From: $myaddress\n";
print MAIL "To: @recipient[0]\n";
print MAIL "Subject: Feedback\n\n";
print MAIL "Absender_________________________ \n";
print MAIL "$myaddress\n\n";
print MAIL "Angaben Feedbacksender___________ \n";
print MAIL "Ansprechpart.: $realname\n";
print MAIL "Organisaion: $realname1\n";
print MAIL "Telefon: $realname2\n\n";
print MAIL "Mitteilung_______________________ \n\n";
print MAIL "@message[0]\n";

print MAIL $message[0] um den ersten Eintrag der Liste zu selektieren.

Ausgabe an den Browser

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

[...]

sleep(5)
print "Location: $returnhtml\n\n";

Location ist ein Header, du hast aber bereits Content gesendet. Das Location muss nach Content-Type (allgemeiner: einfach im Header) stehen, sonst wird es nicht interpretiert. Ein Refer auf Clientseite kannst du über

<meta http-equiv="refresh" content="0; URL=...">

realisieren.

Viele Grüsse

Philipp

PS: perldoc perlstyle; use strict; use warnings; perldoc perldata; use Net::SMTP