Bastian: mail()-Funktion macht Probleme...

Hallo zusammen

Ich suche verzweifelt nach einem Fehler in meinem E-Mail-Verarbeitungsscript. Ich habe ein Formular welches an mailer.php weitergegeben wird. Dort wird Folgendes ausgeführt:

<?php
$absender = $_POST["absender"];
$adressat = $_POST["adressat"];
$betreff = $_POST["betreff"];
$nachricht = nl2br($_POST["nachricht"]);

mail("$adressat", "$betreff", "$nachricht", "From: $absender");
?>

Ich habs auch schon ohne Anführungszeichen in der mail()-Funktion ausprobiert. Aber es will einfach nicht funktionieren.
Weiter unten gebe ich die einzelnen Variablen nochmals aus und da gibt es keine Probleme; die werden also erkannt und sind richtig gesetzt.

Ich bin ratlos...

  1. Hallo,

    Ich habs auch schon ohne Anführungszeichen in der mail()-Funktion ausprobiert. Aber es will einfach nicht funktionieren.

    Die Anführungszeichen kannst du weglassen. Aber was genau geht nicht? Kommt kein E-Mail an, kommt es "komisch" an oder geht gar was ganz anderes nicht?

    Gruß,
    Severin

    --
    They that can give up essential liberty to obtain a little temporary safty deserve neither liberty nor safty.
    -- Benjamin Franklin
    1. Okay, die Anführungszeichen sind weg. Der Rückgabewert der Funktion ist true, also sollte die Mail doch verschickt worden sein, oder?

      Es kommt gar keine E-Mail an. Ich versuche es mal mit anderen Mailadressen.

      1. Hallo,

        Es kommt gar keine E-Mail an. Ich versuche es mal mit anderen Mailadressen.

        Dann liegt es wahrscheinlich am MTA (Mail Transport Agent) deines Servers. Was sagt die php_info() zu den von Fabian angesprochenen Einstellungen?
        Ich glaube das beste ist, wenn du dich einfach an den Administrator/Provider deines Webspaces um Hilfe wendest.

        Gruß,
        Severin

        --
        They that can give up essential liberty to obtain a little temporary safty deserve neither liberty nor safty.
        -- Benjamin Franklin
        1. moin!

          wenn du pech hast, werden die mails vom mta geschluckt. denn ein true sagt immerhin, dass mail die daten an diesen erfolgreich übergeben hat.
          manchmal kann es auch sein, dass der hoster den mailversand auch nur absichtlich verzögert. check mal die faq's.

          gruß.
          roger.

          --
          Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  2. Hi!

    <?php
    $absender = $_POST["absender"];
    $adressat = $_POST["adressat"];
    $betreff = $_POST["betreff"];
    $nachricht = nl2br($_POST["nachricht"]);

    mail("$adressat", "$betreff", "$nachricht", "From: $absender");
    ?>

    Ich habs auch schon ohne Anführungszeichen in der mail()-Funktion ausprobiert. Aber es will einfach nicht funktionieren.

    Die Anführungszeichen sind absolut unnötig und zeugen von einem schlechten Stil. Aus diesem Grund solltest du sie weglassen. Darüber hinaus solltest du den Rückgabewert von mail() überprüfen, dieser ist TRUE, wenn die Mail erfolgreich zum Versand vom lokalen MTA akzeptiert wurde, ansonsten FALSE.

    Darüber hinaus ist sicherlich auch ein Blick in die Ausgabe von phpinfo() interessant, wie es mit den Einstellungen «sendmail_path», «SMTP» und «smtp_port» aussieht.

    Ganz hilfreich dürfte für dich auch ein Blick in die entsprechende Manual-Seite sein: http://de.php.net/manual/en/ref.mail.php

    Grüße,
    Fabian St.

    1. Darüber hinaus ist sicherlich auch ein Blick in die Ausgabe von phpinfo() interessant, wie es mit den Einstellungen «sendmail_path», «SMTP» und «smtp_port» aussieht.

      sendmail_path: /usr/sbin/sendmail -t -i
      SMTP: localhost
      smtp_port: 25

      Wie das zu interpretieren ist, weiss ich allerdings nicht.

      Mittlerweile habe ich das Ganze noch mit anderen Mailadressen ausprobiert: nichts! Das ist mir nun wirklich schleierhaft. Sollte ich mal beim Webhost nachfragen?

      1. Hi!

        Darüber hinaus ist sicherlich auch ein Blick in die Ausgabe von phpinfo() interessant, wie es mit den Einstellungen «sendmail_path», «SMTP» und «smtp_port» aussieht.

        sendmail_path: /usr/sbin/sendmail -t -i
        SMTP: localhost
        smtp_port: 25

        Wie das zu interpretieren ist, weiss ich allerdings nicht.

        Da gibt es eigentlich nicht viel zum Interpretieren ;-) Die Einstellung «sendmail_path» gibt an, welches Programm von mail() verwendet werden soll, um eine Mail zu verschicken, die anderen Daten geben dann noch die Adresse des SMTP-Servers und den Port an, auf dem dieser Anfragen entgegen nimmt. Siehe hierzu auch den von mir im vorherigen Posting erwähnten Link.

        Mittlerweile habe ich das Ganze noch mit anderen Mailadressen ausprobiert: nichts! Das ist mir nun wirklich schleierhaft. Sollte ich mal beim Webhost nachfragen?

        Das wird wohl die beste Möglichkeit sein, da sich dieser auch mit der speziellen Konfiguration des MTA  am besten auskennen sollte.

        Grüße,
        Fabian St.

        1. echo $begrüßung;

          Bitte beachte(t) die Hinweise im Handbuch zu den Mail betreffenden Parametern. SMTP und smtp_port beispielsweise gelten nur für Windows.

          echo "$verabschiedung $name";

          1. Hi!

            Bitte beachte(t) die Hinweise im Handbuch zu den Mail betreffenden Parametern. SMTP und smtp_port beispielsweise gelten nur für Windows.

            Ich weiß, ich habe den Link ja bereits in meinem obigen Beitrag gepostet und du kannst davon ausgehen, dass ich die von mir zitierten Quellen auch selber lese :-/ Dadurch wollte ich eben auf das Betriebssystem des Servers schließen, was durch das /usr/sbin/sendmail nun klar sein dürfte ;-) Unter Umständen wäre vielleicht eine explizite Nennung dieses Punktes von mir angebracht gewesen...

            Grüße,
            Fabian St.