sendmail - sendet nich?
Simone
- perl
Ok, eine wahrscheinlich ganz bloede Frage, aber ich stell sie trotzdem :-/
Und zwar versuche ich mir den einfachen Formmailer fuer ein Formular auf meiner Seite einzurichten, bekomme aber einfach keine Mails. Muss dazu sagen, bin noch Neuling in Sachen sendmail und sowas..
Nun habe ich erstmal das Ganze den Anleitungen entsprechend (http://aktuell.de.selfhtml.org/artikel/cgiperl/form-mail/index.htm) abgespeichert und installiert. Habe auch den richtigen Uebertragunsmodus gewaehlt und die Rechte auf 755 gesetzt.
Meine Email-Adresse hab ich natuerlich auch eingefuegt statt der Standard-Adresse in der Vorlage.
Beim Testen dann kriege ich aber einfach keine Mails.
Hier vielleicht einige nuetzliche Anhaltspunkte:
Die Perl-Datei wird zumindest ausgefuehrt, denn beim Abschicken des Formulars wird danach die Folgeseite angezeigt, die ich als returnhtml definiert habe. Ich bekomme auch keine Fehlermeldungen oder irgendeinen Hinweis. Es kommt halt einfach keine Mail.
"perl" liegt bei mir im Pfad /usr/bin/perl; da die Datei ordentlich verarbeitet wird, gehe ich davon aus, dass der Pfad so stimmt, wie er in der Vorlage steht.
"sendmail" liegt im Pfad /usr/lib/sendmail; habe ihn also aequivalent zum perl-Pfad definiert. Daran sollte es nicht liegen.
Dann kommt hinzu, dass mein Provider mit cgiwrap arbeitet, mit dem ich nicht wirklich vertraut bin, aber laut Anweisung muss man lediglich den Pfad aendern, ueber den das CGI-Skript aufgerufen wird. Und das Skript wird ja auch erstmal ordentlich aufgerufen.
Schliesslich habe ich dann den Quelltext von der Vorlage nochmal komplett uebernommen und nur meine E-Mail-Addresse eingefuegt und das Ganze getestet. Wieder klappt das mit der returnhtml und es kommt keine Fehlermeldung.. aber eben auch keine Mail.
Liegt das nun am sendmail? Oder an dem cgiwrap-Dings? Oder steh ich grad nur total aufm Schlauch?
Tausend Dank schon mal!!!
Ach ja, und eine Mail vom E-Mail-Account meines Providers hab ich mir auch selbst gesandt und die kam prompt; also der ist auch nicht irgendwie ausgefallen.
Hallo,
es ist zwar jetzt nicht direkt eine Antwort auf deine Frage, aber würde etwas dagegen sprechen, das Mail per SMTP zu verschicken, was viel bequemer ist? Desweiteren gab es mal Diskussionen, dass man SMTP sendmail bevorzugen sollte. Warum das so, weiß ich jetzt nicht, aber es liegt sicher irgendwo in den Tiefen des Archivs begraben. Hier ein Beispielscript, das auf jeden Fall funktioniert. Du musst lediglich einen offenen Smtp-Server (meist stellt der Provider einen zur Verfügung) eintragen und die E-Mail-Daten ändern.
#!/usr/bin/perl -w
use strict;
use Net::SMTP;
my $smtpserver = 'mail.domain.com';
my $recvr = 'empfaenger@empfaenger.com'; #An wen
my $recvrname = 'Empfaenger'; #Empfängername
my $email = 'meine@emailadresse.com'; #Von wem (E-Mail)
my $name = 'Markus'; #Von wem, Name
my $betreff = 'Betreff'; #Betreff
my $text = 'Das ist der Text';
my $smtp = Net::SMTP->new($smtpserver) or die "Cant connect to server : $!\n";
my $headers .= "From: $name <$email>\n";
$headers .= "To: $recvrname <$recvr>\n";
$headers .= "Subject:$betreff\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Date: \n";
$headers .= "Content-type: text/plain\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-Mailer: $betreff";
$smtp->mail($email); #von wem? aber Serverintern
$smtp->to($recvr);
$smtp->data();
$smtp->datasend($headers);
$smtp->datasend("\n\n");
$smtp->datasend("$text\n");
$smtp->dataend();
$smtp->quit;
Markus
Hallo Markus,
gegen SMTP spricht an sich auch nix, abgesehen davon, dass das noch mehr ist, womit ich mich nich auskenne :-/
Wie bekomme ich denn Dein Script zum Laufen? Also, ich meine, hab die entsprechenden Variablen geaendert wie von Dir beschrieben, hochgeladen, und nu? Einfach mal aufrufen und sehen was passiert?
Wenn ja, dann kriege ich in dem Fall ne Fehlermeldung, mit der ich auch nix anfangen kann..
"Die Proxy-Anfrage konnte nicht ausgeführt werden.
Fehlermeldung:
malformed header from script. Bad header=BEGIN failed--compilation abor: /var/apache/cgi-bin/cgiwrap "
Hallo,
gegen SMTP spricht an sich auch nix, abgesehen davon, dass das noch mehr ist, womit ich mich nich auskenne :-/
Wie bekomme ich denn Dein Script zum Laufen? Also, ich meine, hab die entsprechenden Variablen geaendert wie von Dir beschrieben, hochgeladen, und nu? Einfach mal aufrufen und sehen was passiert?
Nun, wenn du es von einem Webserver aus starten willst, musst du natürlich auch noch einen Header an den Browser senden, da er ja sonst nicht weiß, wie er die vom Server gesendeten Daten darstellen soll. Im Prinzip gibt es ja nichts darzustellen, da im Script einfach nur irgendwelche Befehle ausgeführt werden.
Das Script würde sonst natürlich fehlerlos funktionieren, wenn du es direkt in der Konsole (zB DOS-Prompt) aufrufst, also nicht auf einem Webserver.
Auf dem Webserver musst du mindestens den Header angeben, also füge bspw den folgenden Teil nach der Zeile "use Net::SMTP;" ein:
print "Content-type:text/html\n\n";
print "Das Script wurde ausgeführt";
Markus
Auf dem Webserver musst du mindestens den Header angeben, also füge bspw den folgenden Teil nach der Zeile "use Net::SMTP;" ein:
print "Content-type:text/html\n\n";
print "Das Script wurde ausgeführt";
oder besser
~~~perl
BEGIN
{
use CGI::Carp qw/fatalsToBrowser/;
print "Content-type:text/html\n\n";
}
Dann kann man auch die Fehlermeldung sehen, fall das Modul nicht vorhanden ist.
Struppi.
Und zwar versuche ich mir den einfachen Formmailer fuer ein Formular auf meiner Seite einzurichten, bekomme aber einfach keine Mails. Muss dazu sagen, bin noch Neuling in Sachen sendmail und sowas..
#!/usr/bin/perl
use CGI qw/:standard/;
my $mail=param(mail); my $go=param(go);
if ($go eq 1)
{
$MP = "/usr/lib/sendmail";
open(MAIL,"|$MP -t") || die;
print MAIL "To: $mail\n";
print MAIL "From: deine\@adresse.dings\n";
print MAIL "Subject: TEST\n\n";
print MAIL "GELAUFEN\n\n";
close(MAIL);
$message="All right<br><br>";
}
print header();
print"
<h1>$mesage</h1>
<form action=DEIN.pl method=post>
<input type=hidden name=go value=1>
<input type=text name=mail>
<input type=submit value=\"Send the Test on left Mailadress\">
</form>
";
Versuch mal das Testdingens. Gruss Gustl
Hmm.. nee, bei dem Testdingens passiert auch nix :-(
Werd ich wohl doch mal beim Provider anfragen muessen, ob es nen geheimen Trick gibt oder so.. soviel zum Versuch, meine Seite am Wochenende zum Laufen zu bringen.. grrrr.. aber danke fuer die Hilfeversuche!
Jetzt nochmal langsam: Bitte den Code vollständig in eine datei kopieren namens smail.pl. ins cgi-bin verzeichnis hochladen. chmod auf 755. dann aufrufen über den browser. http://www.deine.domain/cgi-bin/smail.pl . Sag mir was dabei rauskommt.
Gustl
[code lang=perl]#!/usr/bin/perl
use CGI qw/:standard/;
use CGI::Carp qw/fatalsToBrowser/;
##############################################################
##############################################################
my $mail=param(mail);
my $go=param(go);
my $message;
my @wann=split(/ +/,localtime(time()));
my $MAILPROGRAMM = "/usr/lib/sendmail";
if ($go eq 1)
{
open(MAIL,"|$MAILPROGRAMM -t") || die "Sendmail konnte nicht gestartet werden";
print MAIL "To: DAS WAR ICH <$mail>\n";
print MAIL "From: EXAMPLEME <test@example.com>\n";
print MAIL "Subject: MAILTEST $wann[3]\n\n";
print MAIL "GELAUFEN $wann[2] $wann[1] $wann[4] - $wann[3]\n\n";
close(MAIL);
$message="An $mail wurde eine Testmail verschickt:<br><br>
Wann: $wann[2] $wann[1] $wann[4] - $wann[3]<br><br>";
}
print header();
print"
<font face=verdana color=green size=1><b>$message</b></font>
<form action=smail.pl method=post><input type=hidden name=go value=1>
<font face=verdana color=black size=1>
<b>eMail eintippen: deine@adresse.abc</b></font><br><br>
<input type=text name=mail value="$mail" size=32><br><br>
<input type=submit value="Testmail jetzt versenden">
</form>
";
#########
#########[/code