1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

PHP verschickt leere Emails

Dieses Thema im Forum "PHP" wurde erstellt von Träumer12, 14. November 2016.

  1. Träumer12

    Träumer12 Grünschnabel

    Hallo...!
    Ich bin hier neu,ich verfasse meine ersten Beitrag,
    Ich habe in Html eigene Webseite erstellt,in die Webseite
    ein html Email Formular eingebaut,Formular per PHP Code
    an Server gesendet,bis hier lief alles gut,Absender Email wurde
    gesendet,Email Inhalt also der Nachrichtentext leer,meine Frage?
    woran könnte es liegen,das Email ohne Nachricht gesendet wird.
    Danke!
     
  2. SpiceLab

    SpiceLab ZENmechanic Premium-User

    Das kann unterschiedliche Gründe haben. Deshalb müssen wir erstmal Deinen Code gesehen haben.
     
    cwriter gefällt das.
  3. Träumer12

    Träumer12 Grünschnabel

    Code (Text):
    1. <?php
    2.  
    3. @ini_set("memory_limit",'12kB');
    4.  
    5. $empfaenger=$_POST["@"];
    6. $absender=$_POST["absender"];
    7. $kontaktformular=$_POST["kontaktformular"];
    8. if(isset($_POST['submit'])){
    9. $input=$_POST['submit'];
    10. $kontaktformular=$_POST['kontaktformular'];
    11. $absender=$_POST['absender'];}
    12. //Mailheader UTF-8 fähig machen
    13. $kontaktformular_header='from:'. $kontaktformular ."n";
    14. $kontaktformular_header .='content-type: text/plain; charset=UTF-8'."rn";
    15. if($input=="abschicken");{
    16. mail($empfaenger='t@',$absender,$kontaktformular,$abschicken);
    17. echo "Mail wurde gesendet!";}
    18. ?>
    19. <?php
    20. function checkIfValid($email){
    21. return(filter_var($empfaenger='@',FILTER_VALIDATE_EMAIL)!==false)?true: false;}
    22.  
    23. ?>
     
    Zuletzt bearbeitet: 14. November 2016
  4. cwriter

    cwriter Erfahrenes Mitglied

    Hi

    Bitte keine Doppelposts. Wir lesen generell alles, aber es kann manchmal ein bisschen dauern, bis ein Fragesteller eine Antwort bekommt.

    Du hast in Zeile 15 ein
    Code (PHP):
    1. if($input=="abschicken");{ //Dieses Semikolon ';' sorgt dafür, dass der if-Block direkt endet. Der Code in den geschweiften Klammern wird also immer (unkonditional) ausgeführt.
    2. mail($empfaenger='t@',$absender,$kontaktformular,$abschicken);
    3. echo "Mail wurde gesendet!";}
    Dein $kontaktformular_header ist übrigens ungenutzt...
    Viel schlimmer ist aber die eigentliche Nachricht $abschicken: Die ist nämlich undefiniert. Daher schickst du auch nichts -> leere Emails.
    Und was du mit "rn" und "n" machen willst, weiss ich auch nicht so ganz. Meinst du "\r\n" und "\n"? Das ist nicht dasselbe wie "rn" (macht auch nicht viel Sinn, was wenn du in einer Zeile eine "rn" Zeichenfolge oder sogar nur ein "n" hast? Dann willst du ja nicht jedes Mal eine neue Zeile beginnen, oder?

    Und deine Funktion checkIfValid() sollte so auch nicht funktionieren.

    Und was macht das ini_set dort? Brauchst du das?

    Rein vom Gedanken hinter dem Code kann ich mir kein Bild machen: Du hast viele ungenutzte Variablen; viele gesetzt und nie gelesen, manche einfach gar nicht gesetzt und trotzdem gelesen.

    Dein Problem mit den leeren Mails liegt allerdings (soweit ich das sehe) nur daran, dass, wie schon gesagt, $abschicken nicht definiert ist. Wenn du diese Variable auf einen entsprechenden Wert setzt, sollte das gehen.

    Aber das ändert nichts daran, dass der Code ziemlich unsauber, unsicher und anfällig für allerlei Schabernack ist. Ich hoffe mal, dass der Server nicht am Netz hängt oder zumindest abgesichert ist.

    Gruss
    cwriter
     
    sheel gefällt das.
  5. sheel

    sheel I love Asm Administrator

    Was mir sonst noch speziell auffällt:
    Code (Text):
    1. ($empfaenger='t@', //als Funktionsparameter?
    2. $empfaenger=$_POST["@"]; // ???
    3. @ini_set("memory_limit",'12kB'); //Wenn, dann 12K, aber das ist trotzdem sehr wenig.
     
  6. Träumer12

    Träumer12 Grünschnabel

    Hallo...!
    Cwriter, du hast das richtige Code Teil angesprochen,zu deiner erste Frage;
    Die Header Code und Function check sind unrelevant,es waren ein Versuch von mir
    und was Speicherplatz Reservierung angeht,es ist auch nicht wichtig,von meiner
    Serverseite stehen genug Speicherplatz zu Verfügung.Nun die wichtige und letzte
    Frage,das variable Abschicken nicht definiert ist,auch nicht das Problem,in
    gewisse Hinsicht funktioniert,so bald man anklickt wird das Email gesendet.
    Du hast keine Lösung zu meiner Frage angeboten,warum ich leere Inhalt bekomme.
    Danke!
     
  7. cwriter

    cwriter Erfahrenes Mitglied

    Hi

    Ist ja schön, dass das irrelevant ist. Eigentlich kann man irrelevanten Code auskommentieren, damit sich arme Forenleser nicht das Gehirn zermartern müssen, was denn tatsächlich relevant ist. :-]

    Ja, und da die Variable leer ist, ist auch der Inhalt der eMail leer. Woher soll denn der Inhalt plötzlich kommen?

    Doch. Brauchst du noch Code?
    Code (PHP):
    1. $abschicken = "Dies ist der Inhalt einer Testnachricht";
    2. mail($empfaenger='t@',$absender,$kontaktformular,$abschicken);
    Da du das Mail ja seltsamerweise zu erhalten scheinst, solltest du jetzt einen Inhalt haben.

    Gruss
    cwriter
     
    SpiceLab gefällt das.
  8. Träumer12

    Träumer12 Grünschnabel

    Hallo...!
    Cwriter danke für deine Feedback,ich habe das Problem gelöst,liegt nicht an das variable Abschicken,
    sondern an variable Nachricht,kleine Änderung ich bekomme wieder Emails mit Inhalten.
     
  9. cwriter

    cwriter Erfahrenes Mitglied

    Hi

    Es wäre schön, würdest du deinen Code, der das Problem gelöst hat, posten, damit Leute mit einem ähnlichen Problem, die auf dieses Thema stossen auch diese Lösung sehen.

    Kleiner Nachtrag:
    Diese Variable $nachricht gibt es ja nicht einmal...

    Aber egal: Wie gesagt: Gerne Lösung posten und Thema als erledigt markieren.

    Gruss
    cwriter
     
    SpiceLab gefällt das.
  10. sheel

    sheel I love Asm Administrator

    In deinem Code gibt es weit und breit keine Variable Nachricht.
    ...
    Wenn du uns nicht den Code zeigst, mit dem du wirklich arbeitest, kann dir keiner helfen.
    Wenn dir nur langweilig ist, lass es einfach.
     
  11. Träumer12

    Träumer12 Grünschnabel

    Weisst du Cwriter!,was eine WOW Effekt für einen Programmierer bedeutet,
    wenn der gesuchte Fehler behoben ist,wird den WOW Effekt herausgeben,
    Wow.........................!
    muss ich noch ein Prüfschleife und Spamcheck einbauen,dann ist alles Perfekt.
     
  12. Träumer12

    Träumer12 Grünschnabel

    <?php

    $empfaenger=$_POST["@"];
    $absender=$_POST["absender"];
    $textarea=$_POST["nachricht"];
    $abschicken=$_POST['abschicken'];
    if(isset($_POST['submit'])){
    $input=$_POST['submit'];
    $textarea=$_POST['nachricht'];
    $absender=$_POST['absender'];}

    if($input=="abschicken");{
    mail($empfaenger='@',$absender,$textarea,$abschicken);
    echo "Mail wurde gesendet!";}
    ?>
    //Ich habe den überflüssigen Code entfernt.
    //hat eine Tücken,gibt den Inhalt ohne Umlaute aus.
    //mir fehlt html-Code Kennzeichnung für dieses PHP-Formular.
     
Die Seite wird geladen...