Dj Schmiddi: Formmailer geht nicht.

Moin.

Habe mir einen Formmailer erstellt, und habe das mal getestet.
Problem: Ich bekomme eine leere E-Mail. Was ich bei "E-Mail", "Betreff" und "Nachricht" eingegeben habe wird in der E-Mail nicht angezeigt.
Kann mir jemand sagen wo der Fehler liegen kann?

Danke, MfG Schmiddi.

  1. Moin Dj

    Kann mir jemand sagen wo der Fehler liegen kann?

    Die Kristallkugel ist dunkel. Nicht ohne Quelltext

    Gruß
    Mike

    --
    Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
    1. Moin.

      Code E-Mail Formular:

      <body bgcolor="#000000">
      <center>
       <p>
      <font face="Verdana">
      <br>
      </font>
      <form action="input_text.htm">
      <p><font color="#C0C0C0"><font face="Verdana">Deine E-Mail:</font><br>
      </font>
      <input name="e-mail" type="text" size="30" maxlength="30">
      </p>
      <p><font color="#C0C0C0"><font face="Verdana">Betreff:</font><br>
      </font>
      <input name="betreff" type="text" size="30" maxlength="40">
      </p>
      </form>
      </p>
      <br>
      <form action="textarea.htm">
      <p><font face="Verdana" color="#C0C0C0">Nachricht:<br>
      </font>
      <textarea name="user_eingabe" cols="50" rows="10"></textarea>
      </p>
      </form>
      <br>
      <br>
      <form action="http://www.***********/selfmail.pl" method="post">
      <input type="hidden" name="mailto" value="djschmiddi@web.de">
      <input type="hidden" name="return" value="http://www.**************/Erfolgreich.htm">
      <input type="hidden" name="delimiter" value=": ">
      <input type="hidden" name="subject" value="von www.*********.de">
      <!-- hier beliebige eigene Felder -->
      <input type="submit" value="Abschicken" name="Abschicken"><input type="reset">
      </form>
      </center>

      Code selfmail.pl

      #!/usr/bin/perl

      -------> SMTP-Programm zum Versenden der Mail:

      $Sendmail_Prog = "/usr/lib/sendmail";

      -------> Modul für CGI-Scripts einbinden:

      use CGI;

      -------> Modul für CGI-Scripts zum Einlesen der Formulardaten anwenden:

      $query = new CGI;
      @names = $query->param;

      -------> interne Daten aus den erwarteten hidden-Feldern auslesen:

      $delimiter = $query->param('delimiter');  # ---> :
      $mailto = $query->param('mailto');        # ---> djschmiddi@web.de
      $returnhtml = $query->param('return');    # ---> http://www.*************/Erfolgreich.htm
      $subject = $query->param('subject');      # ---> von www.*******.de

      -------> Text der E-Mail aus den Formulardaten ermitteln:

      $mailtext = "";
      foreach(@names) {
        $name = $_;
        @values = "";
        @values = $query->param($name);
        if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
          foreach $value (@values) {
            $mailtext = $mailtext.$name;
            $mailtext = $mailtext.$delimiter;
            $mailtext = $mailtext.$value."\n";
          }
        }
      }

      -------> E-Mail versenden:

      open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
      print MAIL "To: $mailto\n";
      print MAIL "Subject: $subject\n\n";
      print MAIL "$mailtext\n";
      close(MAIL);

      -------> Dankeseite an Browser senden:

      print "Location: $returnhtml\n\n";

      ENDE

      Hoffe das ist das was du meinst.

      MfG, Schmiddi.

      1. Hallo,

        $mailto = $query->param('mailto');        # ---> djschmiddi@web.de

        Sehe ich das richtig, das man mit diesem Formmailer wunderbar spammen kann. mailto wird zwar im HTML-Teil als hidden-input festgelegt, aber im  Perl-Teil nicht.

        Gruß,
        Henning

        1. Moin.

          Hmm, das verstehe ich jetzt nicht. Soll ich da was ändern?

          MfG, Schmiddi.

          1. Hallo,

            Hmm, das verstehe ich jetzt nicht. Soll ich da was ändern?

            Ja, z.B. $mailto = 'djschmiddi@web.de' im Perlcode hardcodieren.

            Gruß,
            Henning

            1. Moin.

              Bin jetzt aber nicht wirklich schlauer geworden.
              Habe nämlich nicht so die Ahnung davon.
              Würdest du mir sagen, was ich in was umtauschen müßte?

              Danke, MfG Schmiddi.

      2. Moin Schmiddi,

        Hoffe das ist das was du meinst.

        ich wollte mir das mal auf deiner page ansehen. autsch.de

        Du hast im Body angegeben: scroll="no"
        Bei meine Auflösung von 600 x 800 bekomme ich nur dein halbes Bild zu sehen und an den Link: <a title="Eingang" href="../index.htm">
        komme ich gar nicht dran.

        Gruß
        Mike

        --
        Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
        1. Moin.

          Habe das mal von "no" auf "yes" geändert. Wußte garnicht das das auf "no" steht. Komisch ist das aber trotzdem, brauchst doch nur auf den Link oder das Bild klicken.

          Hast du in dem Code einen Fehler gefunden?

          MfG, Schmiddi.

          1. Moin Schmiddi,

            Hast du in dem Code einen Fehler gefunden?

            Siehe den Beitrag von Sabine, er bestätigt meine Vermutung.

            Gruß
            Mike

            --
            Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
      3. Moin Schmiddi,

        <form action="input_text.htm">

        ...

        </form>

        <form action="textarea.htm">

        ...

        </form>

        <form action="http://www.***********/selfmail.pl" method="post">

        ....

        </form>

        ich habe gar keine Ahnung was Perl betrifft, aber mir scheint das es etwas zu tun hat mir drei verschieden Forms.

        und BTW: auf der index page kommt dieser java script fehler:
        Zeile: 57
        Zeichen: 1
        Fehler: Syntaxfehler
        Code: 0

        Gruß
        Mike

        --
        Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
      4. Moin.

        Hallo Schmiddi,

        die Formularfelder "e-mail", "betreff", "user_eingabe" sollten schon innerhalb des richtigen Formtags stehen:

        <form action="http://www.***********/selfmail.pl" method="post">

        <input type="hidden" name="mailto" value="djschmiddi@web.de">
        <input type="hidden" name="return" value="http://www.**************/Erfolgreich.htm">
        <input type="hidden" name="delimiter" value=": ">
        <input type="hidden" name="subject" value="von www.*********.de">

        <!-- hier beliebige eigene Felder -->

        <input name="e-mail" type="text" size="30" maxlength="30">
        <input name="betreff" type="text" size="30" maxlength="40">
        <textarea name="user_eingabe" cols="50" rows="10"></textarea>

        <input type="submit" value="Abschicken" name="Abschicken"><input type="reset">
        </form>

        Alle anderen Form-Tags kannst Du löschen.

        Diese Zeile gehört nicht ins Formular (Mißbrauch zum Spam möglich):
        <input type="hidden" name="mailto" value="djschmiddi@web.de">

        Zitat selfhtml:
        Beachten Sie:
        Das Script ist so wie oben beschrieben universell einsetzbar. Dafür enthält es eine potentielle Schwachstelle: da das Script die Empfängeradresse nicht fest
        einprogrammiert hat, sondern mit den Formulardaten übergeben bekommt, ist es für Spammer missbrauchbar. Sicherer ist es deshalb, keine Empfänger-Mailadresse mit
        den Formulardaten zu übergeben und im Script die folgende Zeile zu ersetzen:
        if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
        ersetzen durch die folgenden beiden Zeilen:
        $mailto = "eigene@adresse.tld";
        if($name ne "return" && $name ne "subject" && $name ne "delimiter") {
        (wobei Sie natürlich die Mailadresse einsetzen müssen, an die die Formulardaten verschickt werden sollen).

        MfG, Schmiddi.

        Gruß Sabine

        1. Moin Sabine.

          Danke für die Hilfe, jetzt geht es.

          Das in der "selfmail.pl" habe ich auch geändert.
          Muß ich denn jetzt das "<input type="hidden" name="mailto" value="djschmiddi@web.de">"
          aus der "E-Mail.htm" löschen?

          Danke, MfG Schmiddi.

          1. Moin Sabine.
            Danke für die Hilfe, jetzt geht es.
            Das in der "selfmail.pl" habe ich auch geändert.
            Muß ich denn jetzt das "<input type="hidden" name="mailto" value="djschmiddi@web.de">"
            aus der "E-Mail.htm" löschen?

            Ja Schmiddi, dieses hidden Feld muß gelöscht werden aus dem HTML-Formular.

            Danke, MfG Schmiddi.

            Gruß Sabine

            1. Moin.

              Habe ich gemacht, denn ging aber garnichts mehr.
              Hab es jetzt wieder so gemacht, wie du vorher geschrieben hast, das geht.

              MfG, Schmiddi.

              1. Moin.

                Habe ich gemacht, denn ging aber garnichts mehr.
                Hab es jetzt wieder so gemacht, wie du vorher geschrieben hast, das geht.

                MfG, Schmiddi.

                Eigentlich sollte es klappen
                (ohne hidden-Feld mit Deiner E-Mail-Adresse im Formular!),

                wenn Du im Script noch diese Zeile

                $mailto = $query->param('mailto');        # ---> djschmiddi@web.de

                durch diese ersetzt

                $mailto = "djschmiddi@web.de";           # mit Backslash so wie es dasteht

                Wenn Deine E-Mail-Adresse im Formular stehen bleibt,
                dann kann die ganze Welt überallhin mit Deinem Script Mails versenden.

                Probiers nochmal wie oben.

                Gruß Sabine

  2. Moin Dj,

    Kann mir jemand sagen wo der Fehler liegen kann?

    die Page E-Mail.htm kannst du eindosen.

    Sie hat keinen DOC-Type keinen header kein gar nix:

    http://validator.w3.org/check?uri=http%3A%2F%2Fwww.the-sound-of-music.com%2FE-Mail%2FE-Mail.htm&verbose=0

    Gruß
    Mike

    --
    Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."