weaslasf: Mail-Funktion verschickt leere E-Mails

Hallo Leute,

ich habe ein Problem mit der fertigen Mail funktion. Ich habe ein kleines Formular erstellt

<form action="contact/sent.php" Method="post">  
<input name="name" size="30">  
<input name="email" size="30">  
<input name="phone" size="30">  
<input name="subject" size="30">  
<textarea name="text" cols="30" rows="5" wrap="physical"></textarea>  
<input type="submit" value="Senden">  
<input type="reset" value="Löschen">  
</form>  

und ein formmailer dazu

<?php  
        $name = $_POST["name"];  
        $name = htmlentities($name);  
  
        $from = $_POST["email"];  
        $from = htmlentities($from);  
  
        $to = "weaslasf@gmx.at";  
  
        $phone = $_POST["phone"];  
        $phone = htmlentities($phone);  
  
        $subject = $_POST["subject"];  
        $subject = htmlentities($subject);  
  
        $text = $_POST["text"];  
        $text = htmlentities($text);  
  
        $date = date("d.m.Y H:i:s");  
  
        if($name!="" and $from!="" and $text!="")  
        {  
         if($phone=="")  
         {  
          $phone = "n/a";  
         }  
  
         $from = "From: $from";  
         $text = "Gesendet am $date von $name (Tel.: $phone)<br><br>$text";  
  
         $sent = mail($to,$subject,$text,$from);  
  
         if($sent == true)  
         {  
          echo "Ihre Nachricht wurde erfolgreich gesendet.";  
         }  
         else  
         {  
          echo "Ihre Nachricht konnte nicht gesendet werden.";  
         }  
        }  
        else  
        {  
         echo "  
          Sie müssen die Felder \"<b>Name</b>\", \"<b>E-Mail</b>\" und \"<b>Text</b>\" ausfüllen.}  
       ?>

nun habe ich das problem, dass das mail zwar ankommt, aber keinen text und betreff enthält. wenn ich allerdings die $text-variable ausgeben lasse steht alles korrekt drinnen, also kann es eigentlich nur an der mail()-funktion liegen.

könnt ihr mir weiterhelfen?

  1. Mahlzeit weaslasf,

    $name = $_POST["name"];

    Wozu dieses überflüssige und fehlerträchtige Umkopieren? Es nützt genau nichts und verschleiert nur die Herkunft der Werte. Und da es sich bei diesen um Benutzereingaben handelt, solltest Du ihnen grundsätzlich misstrauen (nach dem Motto: "ALL INPUT IS EVIL!") und sie vernünftig und sorgfältig validieren, anstatt sie einfach zu übernehmen.

    $name = htmlentities($name);

    Was soll das an dieser Stelle bringen? htmlentities() bzw. IMHO besser htmlspecialchars() ist für die Umwandlung von Daten im Ausgabe-Kontext HTML gedacht - für nichts anderes. Informiere Dich zum Themenkomplex "Kontextwechsel". Dringend!

    $sent = mail($to,$subject,$text,$from);

    Was gibt die Funktion mail() zurück? Wie lautet der Wert der Variablen $sent?

    nun habe ich das problem, dass das mail zwar ankommt, aber keinen text und betreff enthält.

    Der Quelltext der Nachricht ist auch leer? Mit welchem Programm lässt Du Dir diese Mail anzeigen?

    wenn ich allerdings die $text-variable ausgeben lasse steht alles korrekt drinnen, also kann es eigentlich nur an der mail()-funktion liegen.

    Wann und wo lässt Du Dir den Inhalt dieser Variablen ausgeben?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. mahlzeit

      Mahlzeit weaslasf,

      $name = $_POST["name"];

      Wozu dieses überflüssige und fehlerträchtige Umkopieren? Es nützt genau nichts und verschleiert nur die Herkunft der Werte. Und da es sich bei diesen um Benutzereingaben handelt, solltest Du ihnen grundsätzlich misstrauen (nach dem Motto: "ALL INPUT IS EVIL!") und sie vernünftig und sorgfältig validieren, anstatt sie einfach zu übernehmen.

      hmm, stimmt eigentlich. ist unnötig und nach ungültigen zeichen filter ich auch nicht, aber da ich momentan nur mal möchte, dass alles ankommt hab ich das ignoriert.

      $name = htmlentities($name);

      Was soll das an dieser Stelle bringen? htmlentities() bzw. IMHO besser htmlspecialchars() ist für die Umwandlung von Daten im Ausgabe-Kontext HTML gedacht - für nichts anderes. Informiere Dich zum Themenkomplex "Kontextwechsel". Dringend!

      werd ich machen ;) hab den teil aus meinen gästebuch quelltext kopiert und wollte nicht nochmal nachschaun was die funktion macht. da sie meiner meinung nach keinen schaden verursacht, hab ichs mal drin lassen

      $sent = mail($to,$subject,$text,$from);

      Was gibt die Funktion mail() zurück? Wie lautet der Wert der Variablen $sent?

      in $sent habe ich true. er gibt den text aus, dass das mail versandt wurde

      nun habe ich das problem, dass das mail zwar ankommt, aber keinen text und betreff enthält.

      Der Quelltext der Nachricht ist auch leer? Mit welchem Programm lässt Du Dir diese Mail anzeigen?

      ich hab mir das mail einmal auf meinen handy und einmal (übers notebook) im gmx webmail angesehen. beide male das gleiche ergebnis (kein betreff, kein text)

      wenn ich allerdings die $text-variable ausgeben lasse steht alles korrekt drinnen, also kann es eigentlich nur an der mail()-funktion liegen.

      Wann und wo lässt Du Dir den Inhalt dieser Variablen ausgeben?

      habe den teil zum testen in den ausgabe "mail erfolgreich versandt" eingebaut gehabt. hab ich aber wieder entfernt, weil ich dachte dass der fehler nicht daran liegt

      MfG,
      EKKi

      mfg
      weaslasf