E-Mail Formular und ich komme nicht weiter

Doubletaker

Mitglied
ich habe ein e-mail formular und blicke langsam gar nicht mehr durch. ich krieg
die krise, weil es einfach nicht funktioniert und ich langsam am ende bin, hoffe
ihr könnt mir helfen. ich bin für jede hife jetzt schon dankbar für weitere fragen
stehe ich bereit.

hier mein mail formular:
<html>
<head>
<title>Contemporary-Designers</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body background="images/navi03.gif" bgcolor="EDEFEB">
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td></td>
<td><img src="images/navi10.gif" border="0"></td>
<td><img src="images/navi10.gif" border="0"></td>
</tr>
<tr>
<td></td>
<td><img src="images/navi10.gif" border="0"></td>
<td><img src="images/navi10.gif" border="0"></td>
</tr>
<tr>
<td width="20"> </td>
<td>
<center>
<form action="cgi-bin/mailmanager.pl" method="post">
<input type="hidden" name="mailto" value="info@contemporary-designers.de">
<input type="hidden" name="return" value="bestaetigung.htm">
<input type="hidden" name="delimiter" value=": ">
<input type="hidden" name="subject" value="Contemporary-Designers Mail-Formular">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<font face="Arial" size="2" color="666E73">
Name:<br>
<input type="text" size="24" maxlength="100" name="name">
</font>
</td>
<td>
<font face="Arial" size="2" color="666E73">

</font>
</td>
<td>
<font face="Arial" size="2" color="666E73">
E-Mail:<br>
<input type="text" size="24" maxlength="1000" name="mail">
</font>
</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<font face="Arial" size="2" color="666E73">
<br>
<textarea name="text" rows="5" cols="40" wrap="virtual"></textarea>
</font>
</td>
</tr>
</table>
<font face="Arial" size="2" color="666E73"></font>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle"> </td>
<td><img src="images/navi10.gif" border="0"></td>
<td align="center" valign="middle"> </td>
</tr>
<tr>
<td align="center" valign="middle">
<font face="Arial" size="2" color="666E73">
<input name="send" type="submit" value="Abschicken">
</font>
</td>
<td>
<font face="Arial" size="2" color="666E73">

</font>
</td>
<td align="center" valign="middle">
<font face="Arial" size="2" color="666E73">
<input name="reset" type="reset" value=" Löschen ">
</font>
</td>
</tr>
</table>
</form>
</center>
</td>
<td> </td>
</tr>
</table>
</body>
</html>


und hier meine mailmanager.pl:
#!/usr/bin/perl

# -------> SMTP-Programm zum Versenden der Mail:
$Sendmail_Prog = "/usr/sbin/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


# -------> Text der E-Mail aus den Formulardaten ermitteln:
$mailtext = "";
foreach(@names) {
$name = $_;
@values = "";
@values = $query->param($name);
$mailto = "info@contemporary-designers.de";
if($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";
 
folgende meldung kommt immer:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@contemporary-designers.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.



--------------------------------------------------------------------------------

Apache/1.3.29 Server at http://www.contemporary-designers.de Port 80
 
Erste Ausgabe fehlt

Hi,

diese Sch... Kleinigkeit vergess ich in fast jedem meiner Scripte und bis man dann weiß was es ist.
Ich denke bei dir fehlt die aller erste Ausgabe.
print "Content-Type: text/html\n\n";
ohne das kommt auf jeden Fall deine beschriebene Meldung. Kann aber sein, dass noch was anderes nicht stimmt. Das ist auf jeden Fall einer der möglichen Fehler.

Gruß stephsto
 
@stephsto
In seinem Fall braucht er keinen html-Header auszugeben, da er ja nen Location: Header schickt.

@Doubletaker
Als erstes möchte ich dir die Verwendung von use strict; ans Herz legen. Das bedeutet zwar etwas mehr Arbeitsaufwand, da alle Variabeln entsprechend mit my oder our oder ähnlichem deklariert werden müssen. Dies verhindert aber Tippfehler, da strict meckert, wenn du eine Variable verwendest, die zuvor nicht initialisiert wurde. Genaueres zur Verwendung von strict findest du in deiner PerlDoku.

Desweiteren kann ich dir noch use warnings; wärmstens empfehlen, das gibt nämlich verbesserte und mehr Fehlermeldungen aus. (Wahlweise auch durch den '-w' Switch in der Shebang zu ersetzen)

Diese beiden Module/Methoden sind eigentlich Pflicht für jedes Programm, bzw. sollten es werden, weil damit das ganze stark vereinfacht wird.

Sofern zu keinen Zugriff auf die Error-Logfiles deines Webservers haben solltest, würde ich dir noch vorschlagen use CGI::Carp qw(fatalsToBrowser); zu verwenden. Damit kannst du dir dann die Fehlermeldungen von Perl im Browser anzeigen lassen, anstatt immer nur vor dem dämlichen "500 Internal Server Error" zu stehen.

Was auch noch sinnvoll ist, ist use diagnostics;. Das erklärt dir die häufigsten PerlFehlermeldungen. Leider gibt diese die Informationen über den Fehler nicht im Browser aus, wenn du CGI::Carp verwendest. Macht also nur Sinn, wenn du entweder das Programm lokal auf der Kommandozeile testest oder Zugriff auf die Error-Logfiles des Webservers hast.

Damit erstmal viel Glück :)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück