Mark: Formmailer

Hallo!
... bin gerade dabei Perl zu lernen. Es gibt auch schon erste kleine Erfolge... Jetzt stehe ich aber irgendwie auf dem Schlauch:
Ich wollte einen Formmailer machen, damit man mir von meiner HP eine Mail senden kann. habe dazu den selfHTML Formmailer etwas abgeändert. Es wird zwar kein Fehler gemeldet, es kommt aber auch keine Mail an. Am E-Mail-Server liegt's nicht. Wer kann mir helfen, hab' jetzt schon Stundenlang rumprobiert...
Hier der Code:

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);

#---------------------------------------
$Sendmail_Prog = "/usr/sbin/sendmail";
$mailto = "mark@postbus.de";
#---------------------------------------

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   # Un-Webify plus signs and %-encoding
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s/<!--(.|\n)*-->//g;
   #$value =~ s/<([^>]|\n)*>//g;
   $FORM{$name} = $value; }

open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $FORM{'betreff'}\n";
print MAIL "Von: $FORM{'name'}\n";
print MAIL "Email: $FORM{'email'}\n";
print MAIL "$FORM{'text'}\n";
close(MAIL);

print "Location: $FORM{'ok'}\n\n";

  1. Hallihallo,

    versuch's mal damit:

    open(MAIL,"|$Sendmail_Prog -t") || print STDOUT "Mailprogramm konnte nicht gestartet werden\n";

    ich würde STDERR in CGI-Scripts durch STDOUT ersetzen, da nicht

    jeder Webserver STDERR an den Client sendet!

    zuerst einen Mail-Header!

    print MAIL "To: $mailto\n";
    print MAIL "Subject: $FORM{'betreff'}\n";
    print MAIL "From: $FROM{'email'}\n";
    print MAIL "Content-Type: text/plain\n"; # wir wollen ein Text-Mail!

    dann Header abschliessen:

    print MAIL "\n";  # der Header wird mit \n\n vom Body getrennt!

    dann erst der eigentliche Text des Mails:

    print MAIL "Von: $FORM{'name'}\n";
    print MAIL "Email: $FORM{'email'}\n";
    print MAIL "$FORM{'text'}\n";
    close(MAIL);

    Viele Grüsse

    Philipp

    1. Vielen Dank!!! ... hab' halt doch noch nicht so den Überblick in Perl!

      1. Hallihallo Mark

        Vielen Dank!!! ... hab' halt doch noch nicht so den Überblick in Perl!

        Aber bitte. Ist gerne geschehen. 'Tschuldige die verspätete Antwort.

        Viele Grüsse

        Philipp