... auch Mailproblem

23/01/2009 - 12:27 von Yann Carstensen | Report spam
Hallo Leute,

habe bisher noch nicht viel mit Perl herumexperimentiert, aber für die HP
wollte ich ein Formular entwerfen.


Perl wird richtig erkannt, die Dankeseite erscheint - aber ich erhalte kein
mail ...

Hier das Script:
#!/usr/bin/perl
use CGI;
$query = new CGI;
$Sendmail_Prog = "/usr/sbin/sendmail";
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht
gestartet werden";
print MAIL "To: info@muster.de";
print MAIL "Subject: Online-Anfrage";
print MAIL "Name: ";
print Mail $query->param('name');
print Mail "Strasse: ";
print Mail $query->param('strasse');
print Mail "Stadt: ";
print Mail $query->param('stadt');
print Mail $query->param('anfrage');
close(MAIL);
# -> Dankeseite an Browser senden:
print "Location: http://www.muster.de/feedback.htm";


Danke für Tips,

Yann Carstensen
 

Lesen sie die antworten

#1 Ralf Döblitz
24/01/2009 - 17:28 | Warnen spam
Yann Carstensen schrieb:
Hallo Leute,

habe bisher noch nicht viel mit Perl herumexperimentiert, aber für die HP
wollte ich ein Formular entwerfen.


Perl wird richtig erkannt, die Dankeseite erscheint - aber ich erhalte kein
mail ...



Nimm lieber MIME::Lite, das erspart dir einen Haufen Detailarbeit. Unter
anderem hast du dich überhaupt nicht um das korrekte Encoding und die
Deklaration deiner Textnachricht gekümmert - du kannst wohl kaum davon
ausgehen, daß da nur ASCII kommt.

Hier das Script:
#!/usr/bin/perl



Wieso kein Taintmode? Wieso kein "use strict;" und kein "use warnings;"?

use CGI;
$query = new CGI;
$Sendmail_Prog = "/usr/sbin/sendmail";
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht
gestartet werden";
print MAIL "To: ";



@muster ist ein undefiniertes Array. Da hast du vergessen, zu escapen.

print MAIL "Subject: Online-Anfrage";
print MAIL "Name: ";
print Mail $query->param('name');



Reine Hàßlichkeit, kein technischer Fehler: Der Linefeed nach dem Namen
fehlt. Ob sendmail da jetzt CRLF als Zeilentrenner statt eines nackten
LF erwartet (so wie man es im SMTP braucht) bin ich mir nicht sicher.

Technischer Fehler: MAIL und Mail sind unterschiedliche Namen.

print Mail "Strasse: ";
print Mail $query->param('strasse');



Ich glaube kaum, daß der Parameter 'strasse' heißt.

print Mail "Stadt: ";
print Mail $query->param('stadt');



Der gleiche Fehler wie bei "strasse".

print Mail $query->param('anfrage');
close(MAIL);



Du prüfst den Fehlercode nicht. Ja, auch close kann fehlschlagen,
insbesondere bei Pipes, da könnte man tatsàchlich den Fehlercode des
aufgerufenen Programms bekommen (falls es mit den übermittelten Daten
nichts sinnvolles anfangen konnte).

Wie oben schon geschrieben: nimm MIME::Lite, das erste Beispiel der
Manpage enthàlt eigentlich schon fast alles, was du brauchst (Encoding
und benutztes Charset fehlen noch).

Naja, wenigstens hast du im Header keine Variablen benutzt und so das
Mißbrauchsrisiko schon mal recht gering gehalten.

Ralf
Ralf Döblitz * Schapenstraße 6 * 38104 Braunschweig * Germany
Phone: +49-531-2361223 Fax: +49-531-2361224 mailto:
Homepage: http://www.escape.de/users/selene/
Mit UTF-8 kann man gleichzeitig àöüßÄÖÜæœłø‱¼½¾¤¹²³¢€£¥¶§¬÷×±©®™¡¿ verwenden…

Ähnliche fragen