CGI - Standart Mailform
René
- cgi
Hilfe
Ich habe mal ein bißchen mit CGI angefangen, und dacht naja, so ein Mailformular auf der Website ist o.K. Da habe ich aus einem "Lehrbuch"
ein Standart CGI Formular geschrieben und wollte es Einbinden. aber da erscheint beim senden eine Fehlermeldung:
Can't find String terminator "EOF" anywhere before EOF at D:\kunden\yogi-designs.com\cgi-bin\mail_form.cgi line 40
Hier ist mein script:
#!/usr/bin/perl -w
$sendmail = '/usr/sbin/sendmail';
$empfaenger = 'rene.dienemann@yogi-designs.com';
$absender = '';
$site_name = 'yogi-designs';
$site_url = 'www.yogi-designs.com/MyPage/index1024.htm';
use CGI qw(:standard);
$email_body = '';
foreach $feld (param) {
foreach $wert (param($feld)) {
$email_body .="$feld: $wert\n";
}
}
if ($email = param('email')) {
$email =~ s/\n/ /g;
$absender = $email;
}
open MAIL, "|$sendmail -oi -t" or die "Kann keine Pipe zu $sendmail oeffnen: $!\n";
print Mail <<"EOF";
To: $empfaenger
From: $absender
Subject: Mail von meiner Website
$email_body
EOF
close MAIL or die "Kann Pipe zu $sendmail nicht schließen: $!\n";
print header, <<"EOF";
<html>
<head>
<Title>Vielen Dank !</Title>
</head>
<body bgcolor="#D8D8D8">
<h1>Vielen Dank!</h1>
<p>Vielen Dank für Ihre E-Mail. Ich werde so schnell wie möglich antworten.</p>
<p>Zurück auf <a href="$site_url">$site_name</a>.</p>
</body>
</html>
EOF
Danke im voraus Für Eure Hilfe.
Ciao René
Hi,
Ich habe mal ein bißchen mit CGI angefangen, und dacht naja, so ein Mailformular auf der Website ist o.K. Da habe ich aus einem "Lehrbuch"
ein Standart CGI Formular geschrieben und wollte es Einbinden. aber da erscheint beim senden eine Fehlermeldung:Can't find String terminator "EOF" anywhere before EOF at D:\kunden\yogi-designs.com\cgi-bin\mail_form.cgi line 40
Wenn ich die Syntaxdes Scriptes testen lasse, (perl -c) bekomme ich keine Fehlermeldung.
Aber muss nicht nach jedem "Feld" der Mail ein Newline gedruckt werden? Und nach Ende des Headers sogar zwei?
Aber ich wuerde an deiner Stelle sowieso ein Mudul für die Aufgabe benutzen.
Grüße Andres Freund
Guten Morgen,
Can't find String terminator "EOF" anywhere before EOF at D:\kunden\yogi-designs.com\cgi-bin\mail_form.cgi line 40
Vielleich ist EOF kein so gut gewählter Name für deinen String-Begrenzer, denn dies ist zugleich eine Perl-Funktion. Versuche es mal mit einem anderen Namen.
Ansonsten vermute ich mal, dass du ein Windows-System benutzt. Da habe ich das gleiche Problem. Das liegt afaik daran, dass nach dem String-Terminator ein Zeilenumbruch kommen muss, der in Windows anders codiert wird als in Unix. Versuche mal, die Subroutine so zu plazieren, dass der String-Terminator ganz am Ende des Scripts steht. Drücke dann noch mal Enter und speichere das Ganze. Zumindest bei mir funktioniert es danach (WinXP, Proton Code-Editor).
mfg Torsten