Php-Formular bei Strato

  • mein PHP-Formular läuft überall, nur nicht bei Strato...


    Nee, ist nicht für mich, sondern für einen Kunden. Und zwar bekomme ich, wenn ich das script bei Strato auf den Server lege, keine Mail mehr mit dem Formular raus. Bei meinem Provider (Hosteurope) und auch bei 1und1 gehts problemlos.
    An für sich ist so ne Mailfunktion ja nicht schwer, aber es geht nicht. Die eingebauten Abfragen funktionieren, nur halt die Function Mail scheitert.


    PHP
    1. if(mail ($empfaenger, $betreff, $message, $header))


    Hat irgendjemand ne Lösung?


    Beste Grüße, Duke

  • Gibt's eine Fehlermeldung oder kommt nur keine Mail an?
    Falls Letzteres, benutze mal einen ordentlichen Header, sonst landet die Mail vermutlich direkt irgendwo als Spam im Mülleimer.

  • Jo, dann werd ich mir mal en vernünftigen Header suchen und basteln.


    Es gibt ja auch Meinungen, die besagen, dass der Header nicht unbedingt erforderlich ist. War übrigens auch meine. Naja, jetzt weiß ich's besser...



    Duke

  • was könnte an diesem Header falsch sein oder was fehlt noch???


    HTML
    1. $header="From: $email <$email>\r\n";
    2. $header.="Reply-To: $email <$email>\r\n";
    3. $header.="Content-Type: text/plain";


    Beste Grüße, Duke

  • Sind das POST Daten? Dann solltest Du auch mit der Superglobal arbeiten.


    Kleines Bsp:

    PHP
    1. $header = "From:$_POST[name]<$_POST[email]>";
    2. $header .= "\nReply-To: $_POST[email]";
    3. $header .= "\nX-Mailer: PHP/" . phpversion(). "";
    4. $header .= "\nX-Sender-IP: $REMOTE_ADDR";
    5. $header .= "\nContent-Type: text/html";
    6. $header .= "\nContent-Transfer-Encoding: 8bit";
  • Vielen Dank für die Ergänzungen, die werde ich ausprobieren.


    Aber kann es auch sein, dass Strato die Mailfunktion überhaupt nicht zuläßt?
    Die bieten ja auch so ein CGI-Formular an und wollen vielleicht überhaupt nichts anderes...



    Beste Grüße, Duke

  • Es gibt bei Strato eine Eigenart mit PHPs mail() - man *muss* einen ReturnPath in den Headern angeben, ansonsten wird die Email nicht erstellt und auch nicht mal eine Fehlermeldung ausgegeben.


    Setzt du den, wird es funktionieren - und zwar nur bei Strato. :p

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]&#63743;
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • PHP-Formular läuft jetzt auch bei Strato! :p :p


    Aber allein am Header lags nicht, trotzdem vielen Dank. Nachdem ich die Abfrage der Felder überarbeitet und die Variablen ($message) mit den $_Post-Variablen gefüttert habe, gehts jetzt auch mit Strato.


    Vielen Dank für die Hilfe, es ist immer suuuper hier...



    Beste Grüße, Duke

  • Hallo und guten Tag, ich habe auch das Problem das unser Formular bei 1und läuft und bei Strato das Formular "leer" ankommt.
    Zur Information: aus einer kontakt-html wird eine Seite durch
    <form name="kontakt" method="post" action="bestaetigung_kontakt.php"> geöffnet - der Ausgangsquellcode seht in der Kontakt.html
    Ausgangsquellcode:
    <?php
    $text = "Eine neue Anfrage wurde gesendet\n\n----------------------------------------\nFirma: $firma\nName: $name\nVorname: $vorname\n\nStraße: $strasse\nPLZ: $ort\nOrt: $ort\n\nTelefon: $telefon\nE-Mail: $email\n\nDatenschutz: $datenschutz\n----------------------------------------\n\nAnfrage: $nachricht";
    mail ("info@meine-email.de","Anfrage","$text","From: UniCredit-Website");?>


    Ich habe jetzt folgendes daraus gemacht - läuft aber nicht:
    <?php
    {
    $empfaenger = "info@meine-email.de"; // E-Mailadresse einsetzen
    $betreff = "E-Mail-Anfrage";
    /* Mailfunktion */
    $text = "Eine neue Anfrage wurde gesendet\n\n----------------------------------------\n
    $message="Firma: $firma\n";
    $message="Name: $name\n";
    $message="Vorname: $vorname\n";
    $message="Strasse: $strasse\n";
    $message="PLZ: $plz\n";
    $message="Ort: $ort\n";
    $message="Telefon: $telefon\n";
    $message="E-Mail: $email\n";
    $message="Anfrage: $nachricht\n";
    \n----------------------------------------\n


    $header = "From:$_POST[name]<$_POST[email]>";
    $header .= "\nReply-To: $_POST[email]";
    $header .= "\nX-Mailer: PHP/" . phpversion(). "";
    $header .= "\nX-Sender-IP: $REMOTE_ADDR";


    $header .= "\nContent-Type: text/html";
    $header .= "\nContent-Transfer-Encoding: 8bit";



    /* Mail versenden */
    if(mail ($empfaenger, $betreff, $message, $header))


    ?>


    Was ist an den Code falsch ?
    Schreibe ich den Code in die Kontakt.html oder in die bestaetigung_kontakt.php


    Vielen Dank im vorraus

  • Lies mal die vorangegangenen Beiträge. Du musst mit Superglobals arbeiten ;)


    Sprich: alles, was über POST und einem Formular übertagen wird, musst du mit $_POST['feldname'] ansprechen.


    Auch $REMOTE_ADDR müsste $_SERVER['REMOTE_ADDR'] heißen.


    if(mail ($empfaenger, $betreff, $message, $header)) - hier hat die IF Abfrage keinen Sinn, weil du nichts damit machst. Lass es weg oder gibt eine Fehlermeldung aus, wenn mail() nicht erfolgreich war.

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]&#63743;
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • vielen für die schnelle Antwort.


    Ich habe ich beitäge gelesen - irgendetwas passt noch nicht ?


    Der Quelltext sieht jetzt so aus


    <?php
    {
    $empfaenger = "info@meine-email.de"; // E-Mailadresse einsetzen
    $betreff = "E-Mail-Anfrage";
    /* Mailfunktion */
    $text = "Eine neue Anfrage wurde gesendet\n\n----------------------------------------\n
    $message="Firma: $firma\n";
    $message="Name: $name\n";
    $message="Vorname: $vorname\n";
    $message="Strasse: $strasse\n";
    $message="PLZ: $plz\n";
    $message="Ort: $ort\n";
    $message="Telefon: $telefon\n";
    $message="E-Mail: $email\n";
    $message="Anfrage: $nachricht\n";
    \n----------------------------------------\n


    $header = "From:$_POST[firma]<$_POST[name]> <$_POST[vorname]> <$_POST[strasse]>
    <$_POST[plz]> <$_POST[ort]> <$_POST[telefon]> <$_POST[email]> <$_POST[nachricht]>";
    $header .= "\nReply-To: $_POST[info@meine-email.de]";
    $header .= "\nX-Mailer: PHP/" . phpversion(). "";
    $header .= "\nX-Sender-IP: $_SERVER['REMOTE_ADDR'] ";
    $header .= "\nContent-Type: text/html";
    $header .= "\nContent-Transfer-Encoding: 8bit";



    ?>


    Gruss webbernd

  • Wie ich schon sagte - alles, was über POST, bzw. dein Formular kommt. :D


    $message="Firma: $firma\n";
    $message="Name: $name\n";
    $message="Vorname: $vorname\n";
    $message="Strasse: $strasse\n";
    $message="PLZ: $plz\n";
    $message="Ort: $ort\n";
    $message="Telefon: $telefon\n";
    $message="E-Mail: $email\n";
    $message="Anfrage: $nachricht\n";


    Das hier ist allerdings falsch:


    $header = "From:$_POST[firma]<$_POST[name]> <$_POST[vorname]> <$_POST[strasse]>
    <$_POST[plz]> <$_POST[ort]> <$_POST[telefon]> <$_POST[email]> <$_POST[nachricht]>";


    Da gehört NUR die Email des Absenders rein, nicht das gesame Kontaktformular!

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]&#63743;
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • Hallo,


    auch die "message" benötigen die $_POST Variablen.


    Bsp.:

    PHP
    1. $message. = "Name: $_POST[name] \n" ;


    Und nicht die die Punkte hinter $message vergessen...


    Beste Grüße


    Duke

  • @ webbernd
    Mal im ernst, dieser Formmailer ist eine Katastrophe von vorne bis hinten und es ist eigentlich unverantwortlich so etwas überhaupt in's Netz zu stellen, weil es geradezu eine Einladung an jeden Spammer ist das Netz vollzumüllen, da Null Validierung der User Eingabe statt findet.


    Wieso nimmst Du nicht einfach einen fertigen Formmailer, den man auch als einen solchen bezeichnen kann?! Davon gibt es mehr als genug im Web und auch hier im Forum!

  • Ich wollte schon vor vielen Dank schreiben:


    meinst du so
    $header = "From:$_POST[text]<$_POST[email]>";


    Deine Antwort war (Was sind Superglobals ??)
    alles, was über POST und einem Formular übertagen wird, musst du mit $_POST['feldname'] ansprechen. => was ist der Feldname


    Gruss
    Webbernd