problem beim mailer

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • problem beim mailer

    Habe heute versucht mal einen eigenen Mailer zu Coden. Ich habe es mir so gedacht:

    -Es gibt das Formular
    -Der User bekommt seine Angaben nochmals zu Probe ausgelesen
    -Dann sendet er sie an den E-Mail Empfänger

    3 Dateien:

    kontakt.html
    action.php
    send.php

    Problem:

    Ich bekomme zwar die Mail, aber 2x. Auserdem steht in der Mail nur der Name und die E-Mail und die auch noch vertauscht. Ich bekomme auserdem immer 2 E-Mails.

    Meine Fragen:

    1. Wie bekomme ich das obige Problem in den Griff ?
    2. Wie bekomme ich es hin, dass in der Mail die ich bekomme vor den Angaben der Person sachen stehen wie,

    Name: ...
    E-Mail: ...
    Message: ...

    3. Wie bekomme ich es hin das wenn der User seine Mail gesendet hat, er zu einer neuen Seite gelangt ? (mit einfacher Weiterleitung ?)

    So, das ist ja ganz schön viel was ich da von Euch will , aber ich hoffe ich bekomme hilfe.

    Hier die Code`s

    kontakt.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
    <html>
    <head>
    <title>Neues Dokument</title>
    </head>
    <body>
    <table width="443" border="0" height="72">
    <tr>
    <td colspan="2" height="7">
    <p><b>Kontakt Formular</b></p>
    <p></p>
    </td>
    </tr>
    <tr valign="top">
    <td width="105" height="2">Name</td>
    <td width="322" height="2">
    <form name="form1" method="post" action="action.php">
    <input type="text" name="name" size="63">
    </td>
    </tr>
    <tr valign="top">
    <td width="105" height="4">E-Mail</td>
    <td width="322" height="4">
    <form name="form2" method="post" action="">
    <input type="text" name="mail" size="63">
    </td>
    </tr>
    <tr valign="top">
    <td width="105" height="10">Message</td>
    <td width="322" height="10">
    <form name="form3" method="post" action="">
    <textarea name="message" cols="47" rows="12"></textarea>
    </td>
    </tr>
    <tr>
    <td width="105"></td>
    <td width="322"><input type="submit" value="Senden"><input type="reset" value="Löschen"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    <hr>

    action.php

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
    <html>
    <head>
    <title>Neues Dokument</title>
    </head>
    <body>

    <?php
    echo "Sie habe folgende Daten eingegeben:<br>";
    echo "Ihr Name: $name<br>";
    echo "Ihre E-mail: $mail<br>";
    echo "Ihre Mittelung: $message";
    ?>

    <form action="action.php" method="POST">
    <input type="submit">
    </form>
    </body>
    </html>


    <hr>

    send.php


    <?php
    if ($name,$mail,$message)
    {
    bool mail("friedemann.schreiter@gmx.net","E-Mail von:$_POST["name"],$_POST["name"],$_POST["mail"],$_POST["message"]");
    }
    else
    {
    /*Noch keine else Funktion vorhanden*/
    }
    ?>
    <hr>
    Der Fehler muss doch in der send.php liegen oder ?

    Hier der Link wo das Script liegt:

    http://www.advis.de/fr/mailer/

    Danke für eure Aufmerksamkeit
    Zuletzt geändert von friedemann; 08.07.2002, 22:35.

  • #2
    bool mail("friedemann.schreiter@gmx.net","E-Mail von:$_POST["name"],$_POST["name"],$_POST["mail"],$_POST["message"]");

    lass mal bool weg.
    und dann die " schliessen einen String ab, benutze bei $_POST[] einfache '
    mail ( "friedemann.schreiter@gmx.net", "E-Mail von:$_POST['name']", "$_POST['message']","FROM: $_POST['mail']")
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Danke das du dir die Zeit genommen hast und das durchgelesen hast. Leider brachte dein Tip keinen Erfolg. Kurios: jetzt bekam ich auf einmal 7 Mails vom Server.

      Ich hoffe dennoch auf einen schlauen Kopf hier der mir helfen kann

      Kommentar


      • #4
        sag mal wo rufste eigentlich send.php auf?
        Und das hier:
        <form name="form1" method="post" action="action.php">
        <input type="text" name="name" size="63">
        </td>
        </tr>
        <tr valign="top">
        <td width="105" height="4">E-Mail</td>
        <td width="322" height="4">
        <form name="form2" method="post" action="">

        mann kann keine Forms verschachteln...
        Zuletzt geändert von MelloPie; 08.07.2002, 23:51.
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Meine action.php sieht jetzt so aus:

          PHP-Code:
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
          <html>
          <head>
          <title>Neues Dokument</title>
          </head>
          <body>

          <?php
          echo "Sie habe folgende Daten eingegeben:<br>";
          echo 
          "Ihr Name: $name<br>";
          echo 
          "Ihre E-mail: $mail<br>";
          echo 
          "Ihre Mittelung: $message";
          ?>

          <form action="send.php" method="POST">
          <input type="hidden" name="name" value="Name:<?= $_POST[name]; ?>" />
          <input type="hidden" name="mail" value="E-Mail<?= $_POST[mail]; ?>" />
          <input type="hidden" name="message" value="Mitteilung<?= $_POST[message]; ?>" />
          <input type="submit">
          </form>
          </body>
          </html>
          Geht das einfacher ?

          Jetzt ist aber der Fehler in meiner send.php. Da fehlt der dritte Parameter. Wie funzt das ?

          PHP-Code:
          <?php
          if ($name,$mail,$message)
          {
          mail("friedemann.schreiter@gmx.net","Von:$_POST[name],$_POST[message],$_POST[name],$_POST[mail],$_POST[message]");
          }
          else
          {
          /*Noch keine else Funktion vorhanden*/
          }
          ?>

          Kommentar


          • #6
            Also zum ersten Teil mit den Hidden Feldern - Du könntest die ganzen Variablen in einer Session Speichern....

            Zu dem zweiten Problem - Der Dritte Parameter

            Das sind die eMail Header die Du hier festlegen kannst. Ist für 08/15 nutzer nicht relevant. Aber wenn Du gestylte eMails versenden willst schon interresant - für PHP-Menschen sowieso

            Schau doch mal hier: http://www.php.net/manual/de/function.mail.php

            So könnte es mit drittem Parameter aussehen:

            PHP-Code:
            <?php
            $empfänger 
            "friedmann.schreiter@gmx.net";
            $absender "Von:".$_POST["name"]."";
            $nachricht $_POST["message"];

            $headers "Content-Type: text/html\n";
            $headers .= "Content-Transfer-Encoding: 8bit\n";
            $headers .= "From: Max Mustermann <absender@erde.de>\n";
            $headers .= "Cc: [email]CarbonCopy@erde.de[/email]\n";
            $headers .= "Bcc: [email]BlindCarbonCopy@erde.de[/email]\n";
            $headers .= "Reply-To: [email]antwort@test.de[/email]\n";

            if (
            $name =="" || $mail == "" || $message == "")
            {
              echo 
            "<h1>Bitte füllen Sie alle Felder aus!</h1>";
            }
            else
            {
              
            mail('$empfänger''$absender''$nachricht''$header');
            }
            ?>
            Ich denke die Header erklären sich von selber... oder?

            Kommentar


            • #7
              Danke. Ich werde es dann ausprobieren. Aber auf jeden Fall bin ich jetzt bisschen weiter.

              Kommentar


              • #8
                Also, habe das Problem jetzt mit Hilfe gelöst. Jetzt bekomme ich planmäßig die Mail. In der steht jetzt aber nur

                Max Mustermann
                Mustermann@muster.de
                Mustertext

                und die Mail hat keinen Absender (das krieg ich aba hin)

                Ich will aber das es so ankommt:

                Name: MM
                Mail: M@M.de
                Text: ...

                Wie bekomme ich diese Anstriche davor ?

                Kommentar


                • #9
                  Füg es entweder der Variable hinzu oder direkt im Mail aufruf:

                  mail("Empfänger: ".$empfaenger."\n", "Absender: ".$absender."\n"....)

                  Kommentar


                  • #10
                    Now:

                    PHP-Code:
                    <?php  
                     
                    if ($_POST['name'] != "" && $_POST['mail'] != "" && $_POST['message'] != ""

                    $name $_POST['name']; 
                    $mail $_POST['mail']; 
                    $message $_POST['message']; 
                    $message $name "\r\n" $mail "\r\n" $message
                    $from_name $_POST['from_name']; 
                    $from_mail $_POST['from_mail']; 
                     
                    mail("Friedemann Schreiter <friedemann.schreiter@gmx.net>""Kontakt über Formmailer"$message"From: " $from_name " <" $from_mail ">\nX-Mailer: " phpversion() ); 

                    else 

                         
                    /* Noch keine else Anweisung vorhanden! */ 

                     
                    ?>
                    Ich probiers jetzt mal.

                    Kommentar


                    • #11
                      Es hat nicht geklappt. Kann mir bitte jemand in meinen Code etwas als bsp. schreiben ?

                      Kommentar


                      • #12
                        Ouuuh sorry seh gerade das ich da ja totalen mist geschrieben hab die zweite Variable ist ja für das Betreff und nicht für den absender! Shame on me.

                        Naja ich versuche mal deine PHP Datei umzustricken.

                        PHP-Code:
                        <?php
                         
                        if ($_POST['name'] != "" && $_POST['mail'] != "" && $_POST['message'] != ""

                        $empfaenger "Friedemann Schreiter <friedemann.schreiter@gmx.net>";
                        $subject    "Kontakt über Formmailer";

                        $name $_POST['name']; 
                        $mail $_POST['mail']; 
                        $message2 $_POST['message']; 
                        $message $name "\r\n" $mail "\r\n" $message2
                        $from_name $_POST['from_name']; 
                        $from_mail $_POST['from_mail']; 

                        $header =     "From: ".$from_name;
                        $header .=     " <".$from_mail.">\n";
                        $header .=    "X-Mail: "phpversion();

                         
                        mail($empfaenger,$subject,$message,$header);

                        else 

                             
                        /* Noch keine else Anweisung vorhanden! */ 

                         
                        ?>
                        Also die Variable $message wurde zweimal definiert.... Dann hab ich alles was in der mail(); Funktion stand in Variablen geschrieben das dient nur der übersicht.

                        Kommentar


                        • #13
                          So, vom korrekten übermitteln meiner Daten an mein Postfach läuft das Script jetzt Fehlerfrei. Der nächste Schritt ist, dass ich eine Funktion einbauen möchte die eine Naricht ausgibt wenn ein Feld nicht ausgefüllt worden ist. So wie es jetzt ist, reagiert die Funktion aber nur wenn alle Felder unausgefüllt bleiben. Ich kann doch jetzt aber nicht für alle möglichen Feldkombinationen Funktionen schreiben wie:

                          PHP-Code:
                          <?php
                          if ($_POST['name'] == "")
                          echo 
                          "Namen nicht eingegeben";
                          ?>
                          Das habe ich versucht folgendermaßen zu Realisieren:

                          PHP-Code:
                          <?php  
                           
                          if ($_POST['name'] != "" && $_POST['mail'] != "" && $_POST['message'] != ""

                          $name $_POST['name']; 
                          $mail $_POST['mail']; 
                          $message $_POST['message']; 
                          $message "Name: " .$name"\r\n" "E-Mail: " .$mail"\r\n" "Mitteilung: " .$message
                          $from_name $_POST['from_name']; 
                          $from_mail $_POST['from_mail']; 
                           
                          mail("Friedemann Schreiter <friedemann.schreiter@gmx.net>""Kontakt über Formmailer"$message"From: " $name " <" $mail ">\nX-Mailer: " phpversion() ); 


                          if (
                          $_POST['name'] == "" && $_POST['mail'] == "" && $_POST['message'] == "")
                          {
                          echo 
                          "Sie haben nicht alle Felder korrekt ausgefüllt. Um eine Naricht an mich<br>
                                zu senden, müssen sie <b>alle</b> Felder korrekt ausfüllen !"
                          ;

                          //Beta Version Formmailer 1.0b//
                          //Zur Zeit, Coden an der else Funktion//
                          ?>
                          Wie schaff ich es das die Funktion:

                          PHP-Code:
                          if ($_POST['name'] == "" && $_POST['mail'] == "" && $_POST['message'] == "")
                          {
                          echo 
                          "Sie haben nicht alle Felder korrekt ausgefüllt. Um eine Naricht an mich<br>
                                zu senden, müssen sie <b>alle</b> Felder korrekt ausfüllen !"
                          ;

                          das korrekt erledigt, und alle möglichen Felderkombinationen erkennt ?

                          Kommentar


                          • #14
                            PHP-Code:
                            <?php

                            if ($_POST['name'] == ""){echo "Sie haben keinen <b>Namen</b> eingegen!";}
                            elseif (
                            $_POST['mail'] == ""){echo "Sie haben keine <b>eMail adresse</b> eingegen!";}
                            elseif(
                            $_POST['message'] == ""){echo "Sie haben keinen <b>Nachricht</b> eingegen!";}
                            else{
                                echo 
                            "Ihre Nachricht wird gesendet."
                            }

                            ?>
                            Also umgangsprachlich ausgedrückt macht das da oben nun folgendes:
                            WENN kein Name eingegben ist : Meldung"Kein Name"
                            ANSONSTEN WENN keine Email adresse eingegen ist : Meldung...
                            ANSONSTEN WENN keine Nachricht eingegeben ist: Meldung...
                            ANSONSTE - Alles Ok - Nachricht kann gesendet werden: Meldung

                            Kommentar


                            • #15
                              Ich würde das so in deiner PHP Datei speichern:

                              PHP-Code:
                              <?php
                              if ($_POST['name']== ""){echo "Kein Namen eingegeben!";}
                              elseif (
                              $_POST['mail'] == ""){echo "Keine eMail adresse eingegeben!";}
                              elseif (
                              $_POST['message'] == "") {echo "Keine Nachricht eingegeben!";}
                              else{} 
                                  
                              $name $_POST['name']; 
                                  
                              $mail $_POST['mail']; 
                                  
                              $message $_POST['message']; 
                                  
                              $message "Name: " .$name"\r\n" "E-Mail: " .$mail"\r\n" "Mitteilung: " .$message
                                  
                              $from_name $_POST['from_name']; 
                                  
                              $from_mail $_POST['from_mail']; 
                               
                                  
                              mail("Friedemann Schreiter <friedemann.schreiter@gmx.net>""Kontakt über Formmailer"$message"From: " $name " <" $mail ">\nX-Mailer: " phpversion() ); 



                              /**
                               * Das hier kannst Du Dir dann sparen!
                               * 
                               *  
                               * if ($_POST['name'] == "" && $_POST['mail'] == "" && $_POST['message'] == "")
                               * {
                               * echo "Sie haben nicht alle Felder korrekt ausgefüllt. Um eine Naricht an mich<br>
                               *      zu senden, müssen sie <b>alle</b> Felder korrekt ausfüllen !";
                               * }
                               * 
                               **/

                               
                              //Beta Version Formmailer 1.0b//
                              //Zur Zeit, Coden an der else Funktion//
                              ?>
                              So wird überprüft ob die Felder ausgefüllt sind und wenn nicht dann wird das angezeigt. Sind alle ausgefüllt wird die Mail abgeschickt.

                              NiLS

                              Kommentar

                              Lädt...
                              X