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

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Diskordia, 25.08.2005.

  1. Diskordia

    Diskordia Thread Starter MacUser Mitglied

    Beiträge:
    439
    Zustimmungen:
    2
    MacUser seit:
    25.06.2004
    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
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.042
    Zustimmungen:
    1.317
    MacUser seit:
    13.09.2004
    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!
     
  3. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    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?
     
  4. Diskordia

    Diskordia Thread Starter MacUser Mitglied

    Beiträge:
    439
    Zustimmungen:
    2
    MacUser seit:
    25.06.2004
    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
     
  5. Diskordia

    Diskordia Thread Starter MacUser Mitglied

    Beiträge:
    439
    Zustimmungen:
    2
    MacUser seit:
    25.06.2004
    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
     
  6. Hilarious

    Hilarious MacUser Mitglied

    Beiträge:
    2.195
    Zustimmungen:
    5
    MacUser seit:
    25.11.2004
    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: 25.08.2005
  7. stenser

    stenser MacUser Mitglied

    Beiträge:
    777
    Zustimmungen:
    2
    MacUser seit:
    21.10.2003
    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
     
  8. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.818
    Zustimmungen:
    3.633
    MacUser seit:
    23.11.2004
  9. catvarlog

    catvarlog MacUser Mitglied

    Beiträge:
    1.468
    Zustimmungen:
    1
    MacUser seit:
    30.01.2005
    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).
     
Die Seite wird geladen...