blabor123456: mail() funktioniert nicht im IE

hallo..

ich habe ein kontaktformular das mit dem firefox einwandfrei funktioniert, aber wenn man es mit dem IE benutzt kommen keine mails an.. vielleicht kann mir jemand helfen. danke.

<?php

if(isset ($_SESSION["name"]) AND isset ($_SESSION["email"]) AND isset ($_SESSION["betreff"]) AND isset ($_SESSION["nachricht"])){
 mail("meinemail@googlemail.com",
       $_SESSION["betreff"],
    $_SESSION["name"] . " schrieb folgende Nachricht:\n" . $_SESSION["nachricht"] ." \n Seine Email ist: ".  $_SESSION["email"]);

session_destroy();
 }

?>

  1. Sorry, aber das hat mit dem Browser nix zu tun. PHP läuft, wie du hoffentlich weißt serverseitig.

    1. Sorry, aber das hat mit dem Browser nix zu tun. PHP läuft, wie du hoffentlich weißt serverseitig.

      Aber die Daten müssen erst einmal zum Script gelangen und dabei kann der Browser durchaus schon mal Probleme machen. Und so wie er das schildert, vermute ich, dass genau dieser Fall auch hier zutrifft.

      Paul

      1. Aber die Daten müssen erst einmal zum Script gelangen und dabei kann der Browser durchaus schon mal Probleme machen. Und so wie er das schildert, vermute ich, dass genau dieser Fall auch hier zutrifft.

        Paul

        ja.. wie gesagt funktioniert es mit dem Firefox ohne jegliche Probleme. :(

        1. ja.. wie gesagt funktioniert es mit dem Firefox ohne jegliche Probleme. :(

          Ja und aus dem Grund solltest du mal den Forumlar-Quelltext zeigen, denn da wird der Fehler liegen.

          Paul

          1. Hi,

            Ja und aus dem Grund solltest du mal den Forumlar-Quelltext zeigen, denn da wird der Fehler liegen.

            außerdem den PHP-Code, der die Eingaben auswertet... und wie die Daten in die Session kommen - sieht mir nämlich nach einer ziemlichen Spam-Schleuder aus.
            Zu guter letzt kann noch relevant sein, wie die Session übermittelt wird.

            freundliche Grüße
            Ingo

            1. Wenn du deine Mails nur an dich unter der gleichen Domain wie dem Webspace verschickst dürfte Mail für dich reichen.

              Falls du aber über dein Skript Mails an gmx, hotmail oder yahoo auch verschicken magst, da User evtl. dort ihre Adressen haben, solltest du PHPMailer benutzen. Denn die meisten eMail-Provider ordnen openrelay-Mails dem Spamordner zu.

              Btw - PHPMailer wird jetzt weiter entwickelt - von Codeworxtech :D *freu*

              1. Wenn du deine Mails nur an dich unter der gleichen Domain wie dem Webspace verschickst dürfte Mail für dich reichen.

                Falls du aber über dein Skript Mails an gmx, hotmail oder yahoo auch verschicken magst, da User evtl. dort ihre Adressen haben, solltest du PHPMailer benutzen. Denn die meisten eMail-Provider ordnen openrelay-Mails dem Spamordner zu.

                Wieso soll die Funktion mail() gleichbedeutend sein mit open relay-Mails?
                Da ist doch gar kein Zusammenhang oder?

                Paul

                1. Hallo,

                  Falls du aber über dein Skript Mails an gmx, hotmail oder yahoo auch verschicken magst, da User evtl. dort ihre Adressen haben, solltest du PHPMailer benutzen. Denn die meisten eMail-Provider ordnen openrelay-Mails dem Spamordner zu.

                  Wieso soll die Funktion mail() gleichbedeutend sein mit open relay-Mails?
                  Da ist doch gar kein Zusammenhang oder?

                  gut dass du das fragst - dein Einwand ist nämlich vollkommen richtig. :-)

                  Die PHP-Funktion mail() benutzt entweder das auf dem System eingerichtete sendmail-Programm mit dessen Einstellungen (Linux) oder kontaktiert den SMTP-Server, der in der php.ini dafür eingetragen ist (Windows). Wobei in diesem Fall leider kein SMTP-AUTH unterstützt wird, so dass man entweder auf dem eigenen Rechner ein SMTP-Relay einrichten muss (z.B. Mercury/32) oder tatsächlich einen "offenen" SMTP-Server nutzen muss, der keine Authentifizierung erfordert - mit allen Konsequenzen.

                  So long,
                   Martin

                  --
                  Noch Fragen? - Ich weiß es auch nicht.
                  1. Moin!

                    Wobei in diesem Fall leider kein SMTP-AUTH unterstützt wird, so dass man entweder auf dem eigenen Rechner ein SMTP-Relay einrichten muss (z.B. Mercury/32) oder tatsächlich einen "offenen" SMTP-Server nutzen muss, der keine Authentifizierung erfordert - mit allen Konsequenzen.

                    Das stimmt so ja nun nicht. Die Abwesenheit der Unterstützung von SMTP-Auth bedeutet nicht, dass PHP deshalb Open Relays benötigt. Der zu nutzende Webserver kann auch auf andere Weise entscheiden, ob er die Mails, die reinkommen, annehmen und beliebig weiterleiten darf, oder nicht.

                    Der Mailserver von SELFHTML ist in dieser Hinsicht auch "offen" - er erlaubt allen IPs innerhalb unseres IP-Bereichs unauthentifizierten Mailversand.

                    - Sven Rautenberg

                    --
                    "Love your nation - respect the others."
                    1. Hallo Sven,

                      Die Abwesenheit der Unterstützung von SMTP-Auth bedeutet nicht, dass PHP deshalb Open Relays benötigt. Der zu nutzende Webserver ...

                      du meintest wohl "Mailserver"?

                      kann auch auf andere Weise entscheiden, ob er die Mails, die reinkommen, annehmen und beliebig weiterleiten darf, oder nicht.

                      Okay, Punkt für dich. Ich habe tatsächlich übersehen, dass es ja auch noch andere Möglichkeiten der Zugangskontrolle gibt.

                      Der Mailserver von SELFHTML ist in dieser Hinsicht auch "offen" - er erlaubt allen IPs innerhalb unseres IP-Bereichs unauthentifizierten Mailversand.

                      Das würde ich, ehrlich gesagt, auch für "normal" halten.

                      Schönen Abend noch,
                       Martin

                      --
                      Ich bin 30. Ich demensiere apokalyptisch.
                        (Orlando)
          2. ich haber 3 *.php-dateien. in der ersten wird eingetragen was man übermitteln will und überprüft, dass eine gültige email angegeben wird und alles ausgefüllt wurde usw. in der zweiten kann man dann seine angaben ändern oder bestätigen. die dritte sendet die mail und gibt dem besucher den text "nachricht gesendet" zurück.
            da auch im internet explorer die übermittlung der eingegebenen daten von der ersten zur zweiten datei funktioniert, müsste ja das problem in der dritten liegen.

            php in zweiter datei:

            <?php

            if(($_POST["name"] != "") AND ($_POST["email"] != "") AND strstr($_POST["email"],"@") AND strstr($_POST["email"],".") AND ($_POST["betreff"] != "") AND ($_POST["nachricht"] != "")){

            echo "<h2 class="cyan">You wrote the following text: </h2>";

            $_SESSION["name"] = $_POST["name"];
              $_SESSION["email"] = $_POST["email"];
              $_SESSION["betreff"] = $_POST["betreff"];
              $_SESSION["nachricht"] = $_POST["nachricht"];

            echo "<h2>Name</h2>";
              echo "<p>" . $_POST["name"] . "</p>";

            echo "<h2>E-Mail</h2>";
              echo "<p>" . $_POST["email"] . "</p>";

            echo "<h2>Subject</h2>";
              echo "<p>" . $_POST["betreff"] . "</p>";

            echo "<h2>Your Message</h2>";
              echo "<p>" . $_POST["nachricht"] . "</p>";

            echo "<a class="submit" href="index.php?section=contact&language=englisch">Change</a>";
              echo "<a class="submit" href="index.php?section=contact3&language=englisch">Submit</a>";

            }else{

            $_SESSION["name"] = $_POST["name"];
              $_SESSION["email"] = $_POST["email"];
              $_SESSION["betreff"] = $_POST["betreff"];
              $_SESSION["nachricht"] = $_POST["nachricht"];

            echo "<h2 class="cyan">Please fill out every box and a denounce correct emailcontact: </h2>";

            echo "<form action="index.php?section=contact2&language=englisch" method="post">";
              echo " <fieldset>";
              echo "  <label for="name" class="left">Name</label>";
              echo "  <input type="text" size="30" name="name"  value="". $_SESSION["name"]  ."" /><br />";

            echo "  <label for="email" class="left">E-Mail</label>";
              echo "  <input type="text" size="30" name="email" value="". $_SESSION["email"]  ."" /><br />";

            echo "  <label for="betreff" class="left">Subject</label>";
              echo "  <input type="text" size="30" name="betreff"  value="". $_SESSION["betreff"]  ."" /><br />";
              echo " </fieldset>";
              echo " <fieldset>";
              echo "  <label for="nachricht" class="left">Your message</label>";
              echo "  <textarea rows="4" cols="29" name="nachricht" >". $_SESSION["nachricht"]  ."</textarea><br />";

            echo "  <input type="submit" value="Submit" class= "submit"  />";
              echo " </fieldset>";
              echo "</form> ";

            }
              ?>

            php in der dritten datei:

            <?php

            if(isset ($_SESSION["name"]) AND isset ($_SESSION["email"]) AND isset ($_SESSION["betreff"]) AND isset ($_SESSION["nachricht"])){
             mail("mostwantedmagazine@googlemail.com",
                   $_SESSION["betreff"],
                $_SESSION["name"] . " schrieb folgende Nachricht:\n" . $_SESSION["nachricht"] ." \n Seine Email ist: ".  $_SESSION["email"]);

            session_destroy();
             }

            ?>

            1. Hi,

              echo "<form action="index.php?section=contact2&language=englisch" method="post">";
                echo " <fieldset>";

              ohh, dein Code ist in vielerei Hinsicht verbesserungswürdig, aber das ist eine andere Geschichte.

              Bevor ich das nun detailliert prüfe, würde ich auf die Schnelle gerne mal wissen was passiert wenn du die Actionangabe auslagerst also so:
              *Muss nicht der Grund sein, aber könnte u.U.

              echo '<form action="index.php" method="post">';
              echo '<input type="hidden" name="section" value="contact">';
              echo '<input type="hidden" name="language" value="englisch">';
              echo '<fieldset>';

              Paul

              ps. Du könntest dir viele escapes \ sparen wenn du singlequotes nutzt, wie
              in meinem Beispiel. Und jede Zeile mit echo ist eigentlich auch nicht notwendig, aber das ist auch eine andere Geschichte.

              1. ups, nicht

                echo '<input type="hidden" name="section" value="contact">';

                sondern ist ja contact2, also

                echo '<input type="hidden" name="section" value="contact2">';

              2. echo '<form action="index.php" method="post">';
                echo '<input type="hidden" name="section" value="contact">';
                echo '<input type="hidden" name="language" value="englisch">';
                echo '<fieldset>';

                hiermit funktionierts.. danke für all die tipps. ich werd sie mir zu herzen nehmen.

                noch eine frage in bezug auf spam, wäre es doch nur so, dass die emailadresse an die die kontaktdaten geschickt werden mit spam überhäuft werden würde und nicht die emailadressen, die von den nutzern angegeben werden. oder?

                1. Hi,

                  noch eine frage in bezug auf spam, wäre es doch nur so, dass die emailadresse an die die kontaktdaten geschickt werden mit spam überhäuft werden würde und nicht die emailadressen, die von den nutzern angegeben werden. oder?

                  Oder.

                  Ueber ungepruefte Header-Felder - und auch dein Betreff ist bspw. ein solches - lassen sich weitere To:, CC: oder BCC:-Angaben einschleusen.

                  Informiere dich ueber das Stichwort (Mail) Header Injection.

                  MfG ChrisB

              3. ps. Du könntest dir viele escapes \ sparen wenn du singlequotes nutzt,

                Man könnte es sich überhaupt sparen für HTML einen PHP Kontext zu verwenden... Warum nicht einfach PHP verlassen, wenn man es nicht braucht?

                Gruß,
                Andreas

                1. ps. Du könntest dir viele escapes \ sparen wenn du singlequotes nutzt,
                  Man könnte es sich überhaupt sparen für HTML einen PHP Kontext zu verwenden... Warum nicht einfach PHP verlassen, wenn man es nicht braucht?

                  Weil genau diese Vorgehensweise oft bei Anfängern die Übersicht verlieren lässt, insbesondere wenn innerhalb des HTML auch wieder Variabeln genutzt werden. Noch besser finde ich persönlich die Möglichkeit der heredoc bei solchen Gegebenheiten, aber das ist Ansichtssache und für den OP im Moment auch nicht zwingend wichtig, weil das wie gesagt eine andere Geschichte ist.

                  Paul

            2. Hi,

              ich haber 3 *.php-dateien.

              das sind 2 zuviel... Informiere Dich über "Affenformulare".

              $_SESSION["name"] = $_POST["name"];
                $_SESSION["email"] = $_POST["email"];
                $_SESSION["betreff"] = $_POST["betreff"];

              wie ich vermutet hatte: eine Spam-Schleuder.
              Richte Dich schon mal auf eine Sperrung Deiner Seite oder gar Schadenersatzforderungen ein. Oder lösche diesen Unsinn sofort.

              Was den IE betrifft, dürfte Tom Dir den richtigen Hinweis gegeben haben.

              freundliche Grüße
              Ingo

  2. Hello,

    ich habe ein kontaktformular das mit dem firefox einwandfrei funktioniert, aber wenn man es mit dem IE benutzt kommen keine mails an.. vielleicht kann mir jemand helfen. danke.

    Hast Du im betroffenen IE kontrolliert, onb er Cookies zulässt?

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de