Entschuldigt die Frage: warum läuft sendmail nicht
Michael Vitz
- cgi
0 Rol0 Michael
0 Michael Schröpl0 Jean-Luc0 RoRo
Hallo zusammen!
Ich weiss:
--ich bin Anfänger in cgi/perl
--das thema ist tausendmal behandelt worden
--ich schlage mich seit 2Stunden durchs Archiv
aber: mein script löft nicht, und ich weiss nich wieso!
#!/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
my $Sendmail_Prog = "/bin/sendmail";
my $from = "ssss@gmx.de";
my $mailto = "calusp@gmx.de";
my $subject = "Dein Betreff";
open(MAIL,"|$Sendmail_Prog -T") || print "Mailprogramm error\n";
print MAIL "From: $from\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Dein Text\n";
close(MAIL) || print "Fehler beim Mailversenden!";
ich erhalte den Fehler: Fehler beim Mailversenden!
wo kann der Fehler denn liegen?
Noch eine Frage (wo wir grad dabei sind)
was ist der Unterschied zwischen einer .cgi und einer .pl Datei, wenn jedesmal Perl drinsteckt?
Ich danke schonmal
Michael
Hi,
my $Sendmail_Prog = "/bin/sendmail";
Vielleicht der Pfad zu sendmail, ich tippe auf so was wie:"/usr/lib/sendmail" o.ä..
Rol
Hallo!
Ne, das is gecheckt, sonst käm ja: "Mailprogramm error\n";
oder?
Michael
Hi,
aber: mein script löft nicht, und ich weiss nich wieso!
Dein Skript läßt mich daran zweifeln, daß Du es wissen willst. ;-)
#!/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
Immerhin schon mal viele Pluspunkte. :-)
my $Sendmail_Prog = "/bin/sendmail";
Plattformabhängig, aber ... nun ja.
open(MAIL,"|$Sendmail_Prog -T") || print "Mailprogramm error\n";
close(MAIL) || print "Fehler beim Mailversenden!";
Und zwar welcher Fehler genau? "$!" würde Dir das sagen.
ich erhalte den Fehler: Fehler beim Mailversenden!
Yep. Genau das und nichts anderes gibt Dein Skript aus.
wo kann der Fehler denn liegen?
Perl sagt es Dir - Dein Skript hört aber nicht hin.
was ist der Unterschied zwischen einer .cgi und einer .pl Datei,
wenn jedesmal Perl drinsteckt?
CGI ist ein Interface, Perl eine Sprache.
Es gibt Leute, die wollen gerne alle CGI-Anwendungen auf den ersten
Blick als solche erkennen (egal, ob Perl oder nicht), und es gibt
andere, die wollen gerne alle Perl-Skripte erkennen (egal, ob CGI
oder nicht).
Und es gibt Default-Konfigurationen von Webservern, die wiederum einer
dieser beiden Religionen mehr anhängen als der anderen.
Ich gehöre zur letzteren Fraktion - ob es CGI ist, sehe ich am Ein-
satzfall bzw. am Installationsverzeichnis (könnte ja /cgi-bin heißen
etc.).
Viele Grüße
Michael
open(MAIL,"|$Sendmail_Prog -T") || print "Mailprogramm error\n";
close(MAIL) || print "Fehler beim Mailversenden!";
Und zwar welcher Fehler genau? "$!" würde Dir das sagen.
wo soll ich das einbauen? hinter "||"?
ich erhalte den Fehler: Fehler beim Mailversenden!
Yep. Genau das und nichts anderes gibt Dein Skript aus.
wo kann der Fehler denn liegen?
Perl sagt es Dir - Dein Skript hört aber nicht hin.
(sorry hab das script aus dem Archiv hier...)
Dank schonmal
Michael
Hi,
wo soll ich das einbauen? hinter "||"?
open(MAIL,"|$Sendmail_Prog -t") or die "Kann Sendmail nicht oeffnen : $!\n";
Hi,
wo soll ich das einbauen? hinter "||"?
open(MAIL,"|$Sendmail_Prog -t") or die "Kann Sendmail nicht oeffnen : $!\n";
wenn ich das da einbau kommt: Fehler beim Mailversenden!
bau ich das in die close zeile ein: Premature end of script headers
??? Gruss Michael
Hi,
open(MAIL,"|$Sendmail_Prog -t") or die "Kann Sendmail nicht oeffnen : $!\n";
wenn ich das da einbau kommt: Fehler beim Mailversenden!
Der Fehler trat ja schon vorher beim "close" auf, das tut er immer noch.
bau ich das in die close zeile ein: Premature end of script headers
Angenommen, Du hast dabei keinen Syntaxfehler eingebaut:
Wo ist er denn, der HTTP-Header, den Dein CGI-Skript nach stdout auszugeben
hätte? In Deinem Quelltext sehe ich nichts davon.
Daß Du "nebenbei" auch eine Mail wegschickst, entbindet Dein Skript nicht
von der Verpflichtung, die Schnittstelle zum Webserver korrekt zu bedienen.
Viele Grüße
Michael
Ok ich lerne sekündlich dazu!
hier der neue code:
keine Fehlermeldung mehr, aber auch keine E-Mail!(Hab zwei adressen getestet)
#!/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
my $Sendmail_Prog = "/bin/sendmail";
my $from = "ssss@gmx.de";
my $mailto = "webmater@glauben-kultur.de";
my $subject = "Dein Betreff";
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";
open(MAIL,"|$Sendmail_Prog -T");
print MAIL "From: $from\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Dein Text\n";
close(MAIL) or die "Kann mail nicht senden: $!\n";
print "</body></html>\n";
?????
Gruss Michael
Hi,
Ok ich lerne sekündlich dazu!
das macht ja richtig Spaß, Dir zu antworten. :-)
hier der neue code:
keine Fehlermeldung mehr, aber auch keine E-Mail!(Hab zwei adressen getestet)
Kann gut sein, daß Dein Skript jetzt tut, was es zu tun in der Lage ist.
Das heißt natürlich noch lange nicht, daß beispielsweise der "sendmail"
auf Deinem Server befugt ist, tatsächlich Mails wegzuschicken, also einen
freigeschalteten SMTP-Server hat und was noch alles.
my $from = "ssss@gmx.de";
Hast Du denn hier eine Absenderadresse angegeben, unter welcher Du even-
tuelle Fehlermeldungen auch selbst empfangen könntest?
Außerdem kann die Mail irgendwo unterwegs verschütt gehen oder ggf. auch
nicht zustellbar sein:
my $mailto = "webmater@glauben-kultur.de";
Hoppsala - soll der wirklich "webmater" heißen?
open(MAIL,"|$Sendmail_Prog -T");
Weil Du das mit einem entsprechenden Perl-Modul, das Dir direkt die SMTP-
Schnittstelle anbieten würde, eventuell viel feiner (und transparenter)
steuern könntest (und damit nicht auf die Existenz von "sendmail" ange-
wiesen - dafür müßtest Du aber einiges selbst angeben, etwa die Adresse
des erwähnten SMTP-Servers), hatte ich gleich am Anfang die Verwendung
von "sendmail" nicht so ganz perfekt gefunden.
Viele Grüße
Michael
Kann gut sein, daß Dein Skript jetzt tut, was es zu tun in der Lage ist.
Das heißt natürlich noch lange nicht, daß beispielsweise der "sendmail"
auf Deinem Server befugt ist, tatsächlich Mails wegzuschicken, also einen
freigeschalteten SMTP-Server hat und was noch alles.
Die Seite ist bei kontent gehostet, da sollte das alles gehen...
my $from = "ssss@gmx.de";
Hast Du denn hier eine Absenderadresse angegeben, unter welcher Du even-
tuelle Fehlermeldungen auch selbst empfangen könntest?
Hab ich jetzt auch probiert: nix!
Hoppsala - soll der wirklich "webmater" heißen?
kleiner Tippfehler hatte ich inzwischen schon verbessert und hatte auch noch eine andere Adresse getestet, von daher...
open(MAIL,"|$Sendmail_Prog -T");
Weil Du das mit einem entsprechenden Perl-Modul, das Dir direkt die SMTP-
Schnittstelle anbieten würde, eventuell viel feiner (und transparenter)
steuern könntest (und damit nicht auf die Existenz von "sendmail" ange-
wiesen - dafür müßtest Du aber einiges selbst angeben, etwa die Adresse
des erwähnten SMTP-Servers), hatte ich gleich am Anfang die Verwendung
von "sendmail" nicht so ganz perfekt gefunden.
Ich denke das wär für den Anfang was viel auf einmal und ich weiss auch nich ob das unterstützt wird. Für sendmail wird allerdings von Kontent Reklame gemacht (extra als Leistung erwähnt) und dann würde ich das gern nutzen können, zumal dies nur ein Testscript ist das ausloten sollte wo es bei einem anderen (free-download-selbstkofiguriert-)FormMail.pl hakt!
Kontent bietet ein php-script an, das aber für einen DAU nicht zu kofigurieren ist und bis ich das ins Layout gepresst habe...eigentlich wollte ich für die Erstellung eines Formulars (Ursprungsproblem) nach Perl nicht noch PHP, Chinesisch, C++, Gälisch und hintertibetanische Paarungsrituals-Dialekte lernen...
Obwohl ersteres und letzteres in der mittelfristigen Planung durchaus schon berücksichtigt sind!
meinst du das es was bringt das Script mit der Frage weshalb es nicht funzt mal an den Kontent-support zu schicken?
Danke für deine Hilfe
Warst ein strenger und anspruchsvoller Lehrer
Schüler Michael
Viele Grüße
Michael
klein -t
und ein neuer Tag haben es zum laufen gebracht!
hatte -T geschrieben weil das in einem vorigen testlauf im gegensatz zur kleinschreibung keinen Fehler ausgab
und wegen:
selfhtml80/cgiperl/sprache/intro.htm#aufruf
...naja...
bin jetzt viel schlauer...
Danke an alle
Michael Vitz
übrigens der große Bruder läuft auchschon, obwohl ich nicht weiss warum, denn ich tat nichts anderes als gestern!??? BIN GLÜCKLICH!!!
Hi Michael,
Warst ein strenger und anspruchsvoller Lehrer
Du bist ein lernwilliger Schüler - recht so!
Mehr solche in diesem Forum, bitte ...
Viele Grüße
Michael
Moin,
geht's jetzt ?
Ich würde mal stark vermuten, daß die Zeile
print MAIL "Dein Text\n";
so lauten müßte:
print MAIL "Dein Text\n\n";
Gruß
Jean-Luc
Hallo Michael,
open(MAIL,"|$Sendmail_Prog -T") || print "Mailprogramm error\n";
der taint Schalter schreibt sich "-t" also bitte kleinschreiben.
Viele Grüße, Rolf
Ahjow: Mit dem Perl Modul Net::SMTP (wie Michael Schröpl schon sagte) kannst Du 's Problem eigentlich besser lösen. Als SMTP Host nimm oifach deinen Server oder irgendeinen anderen wo sendmail läuft ;-)