php maill(), muss ich den smtp server noch einstellen?

Diskordia

Diskordia

Aktives Mitglied
Thread Starter
Dabei seit
25.06.2004
Beiträge
440
Reaktionspunkte
2
Hallo zusammen

Ich hab n kleines Problem bei meiner Webpage und zwar möchte ich mit der php Funktion mail() Daten versenden. Jetzt arbeitet er meinen Code wunderbar ab, bringt keine Fehlermeldung, nichts. Es sieht so aus als hätte es geklappt, aber ich bekomm das mail nicht. Jetzt weiss ich nicht, ob ich da noch was konfigurieren muss, oder ob das per Voreinstellung auf dem Max OS 10.4 Server gehen müsste.
Ich glaube zwar nicht, dass etwas an meinem Code falsch ist, ich poste es zur Sicherheit dennoch mal:
PHP:
<?
$email = $_POST['email'];
$subject = $_POST['subject'];
$text = $_POST['text'];
if ($email!="" AND $subject!="") {
$to      = "beispiel@domain.ch";
$xtra    = "From: beispiel@domain.ch (Ab Sender)\r\n";
$xtra   .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n";
$xtra   .= "X-Mailer: PHP ". phpversion();
mail($to,
     $subject,
     $text,
     $xtra);
header("location: ../success.php");
}
else {
header("location: ../error.php");
}
?>

Ähm, und keine Angst, die mailadressen habe ich angepasset :D

GruZZ Diskordia
 
Nimm mal die header()-Befehle heraus. Laut PHP-Doku ist die Reihenfolge bei so etwas nicht definiert. Sprich ob der mail-Befehl noch abgearbeitet wird kann Glücksache sein. Dein mail-Befehl mag syntaktisch korrekt sein, die Frage ist aber ob der mailserver die mail versendet und der SMTP sie akzeptiert. Das stünde dann in den LOG-Dateien!
 
Läuft das Skript bei Dir lokal oder beim Provider auf dem Webserver?
Kann es sein, dass der Empfänger Mailserver die Mail bounced oder als SPAM einstuft und filtert?
 
Also, das mit dem Headerbefehl muss ich mal austesten.
Der Server ist eine eigene lokale Maschine mit dem 10.4 Server drauf. Und als SPAM wirds nicht deklariert, da der Mailserver SPAM nicht löscht, sondern nur als solches markiert.

GruZZ Diskordia
 
Also das mit den Headerbefehlen hab ich jetzt ausprobiert und es ändert leider nichts am Resultat :(
Ich hab mal in Erfahrung gebracht, dass php auf Unixsystemen standardmässig sendmail benutzt. Nun, sendmail ist auf dem server drauf! Wo währe dann die logdatei? Da würde ich ja sehen ob die Daten versendet wurden.

GruZZ Diskordia
 
Um das Logfile einsehen zu können, müsstest Du entsprechende Rechte haben. Sollte dies der Fall sein, könntest Du unter /var/log/ fündig werden. Versuch`s mal mit
tail /var/log -f -n50
Dies zeigt die letzten 50 Zeilen an und aktualisiert "live". Häufig erfordert aber ein neuerer Sendmail, dass Du mit SMTP-Auth versendest, oder anderweitig eine Freigabe zum Senden erhältst, damit nicht jeder diesen SMTP als Relais verwenden kann.

Edit: Noch eine Idee: Versuch doch mal, den Rückgabewert der mail()-Methode zu verwenden (zu Debug-Zwecken):

PHP:
if ($result = mail($to, $subject, $text, $xtra)) {
    echo "<pre>Juchei</pre>\n";
} else {
    echo "<pre>Bernd das Brot sagt: Mist.</pre>\n";
}
 
Zuletzt bearbeitet:
Und wie kann man SMTP Auth verwenden? Dazu muss ich doch dann auch irgendwo den SMTP-Server spezifizieren. Wo kann ich das dann noch machen?


Jens
 
Diskordia schrieb:
Also, das mit dem Headerbefehl muss ich mal austesten.
Der Server ist eine eigene lokale Maschine mit dem 10.4 Server drauf. Und als SPAM wirds nicht deklariert, da der Mailserver SPAM nicht löscht, sondern nur als solches markiert.

GruZZ Diskordia

Das "lokal" könnte dein Problem sein. Evtl. geht die E-Mail nicht aus dem Server raus.

Wenn ich mail() lokal auf 10.4.8 (client, nicht server) testen möchte, lasse ich die mail an einen lokalen user schicken.

$to = "user_auf_der_maschine@localhost";

Dann im terminal mit dem entsprechende User einloggen und dann "mail" starten (das konsoloneprogramm).
 
Zurück
Oben Unten