Hallo Steffi
Wenn ich das Formular abschicke, kommt immer
Method Not Allowed
The requested method POST is not allowed for the URL /FormMail.pl.
Hab mir das Script mal angesehen, konnte aber keine Fehler auf den ersten Blick erkennen. Was mich allerdings wundert, ist der Ablageort des Scripts:
www.hundehalter.de/mailer.pl
Normalerweise musst du solche Scripts im definierten CGI-Verzeichnis ablegen, es sei denn, dein Provider hat es so eingerichtet, dass Scripts uberall ausfuehrbar sind. Oder hast du das Script nur mal dort abgelegt, damit man es downloaden und sehen kann, um Fehler darin zu finden?
Und wenn's gar nix hilft, hier noch mal ein anderes FormMail-Script:
Teil 1 (HTML):
<form action="http://deinserver/cgi-bin/mailscript.pl" method="post">
<input type="hidden" name="mailto" value="DeinName@deinProvider.xy">
<input type="hidden" name="return" value="http://www.xy.de/danke.html">
<input type="hidden" name="delimiter" value=": ">
<input type="hidden" name="subject" value="Feedback-Formular">
<!-- hier beliebige eigene Felder -->
<input type="submit"><input type="reset">
</form>
Teil 2 (Script):
#!/usr/bin/perl
-------> SMTP-Programm zum Versenden der Mail:
$Sendmail_Prog = "/usr/lib/sendmail";
-------> 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'); # ---> Empfängeradresse
$returnhtml = $query->param('return'); # ---> URL für Dankeseite
$subject = $query->param('subject'); # ---> E-Mail-Subject
-------> HTTP-Ausgabe schon mal vorbereiten:
print "Content-type: text/html\n\n";
-------> 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 "Mailprogramm konnte nicht gestartet werden\n";
print "To: $mailto\n";
print MAIL "To: $mailto\n";
print "Subject: $subject\n\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
print "$mailtext\n</pre>";
exit(1);
close(MAIL);
-------> Dankeseite an Browser senden:
print "Location: $returnhtml\n\n";
exit(1);