PHP verschickt leere Emails

T

Träumer12

#1
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!
 
T

Träumer12

#3
Code:
<?php

@ini_set("memory_limit",'12kB');

$empfaenger=$_POST["@"];
$absender=$_POST["absender"];
$kontaktformular=$_POST["kontaktformular"];
if(isset($_POST['submit'])){
$input=$_POST['submit'];
$kontaktformular=$_POST['kontaktformular'];
$absender=$_POST['absender'];}
//Mailheader UTF-8 fähig machen
$kontaktformular_header='from:'. $kontaktformular ."n";
$kontaktformular_header .='content-type: text/plain; charset=UTF-8'."rn";
if($input=="abschicken");{
mail($empfaenger='t@',$absender,$kontaktformular,$abschicken);
echo "Mail wurde gesendet!";}
?>
<?php
function checkIfValid($email){
return(filter_var($empfaenger='@',FILTER_VALIDATE_EMAIL)!==false)?true: false;}

?>
 
Zuletzt bearbeitet von einem Moderator:

cwriter

Erfahrenes Mitglied
#4
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
PHP:
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.
mail($empfaenger='t@',$absender,$kontaktformular,$abschicken);
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
 
T

Träumer12

#6
sorry mit der Doppelpost
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!
 

cwriter

Erfahrenes Mitglied
#7
Hi

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.
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. :-]

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.
Ja, und da die Variable leer ist, ist auch der Inhalt der eMail leer. Woher soll denn der Inhalt plötzlich kommen?

Du hast keine Lösung zu meiner Frage angeboten,warum ich leere Inhalt bekomme.
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.
Doch. Brauchst du noch Code?
PHP:
$abschicken = "Dies ist der Inhalt einer Testnachricht";
mail($empfaenger='t@',$absender,$kontaktformular,$abschicken);
Da du das Mail ja seltsamerweise zu erhalten scheinst, solltest du jetzt einen Inhalt haben.

Gruss
cwriter
 

cwriter

Erfahrenes Mitglied
#9
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:
ich habe das Problem gelöst,liegt nicht an das variable Abschicken,
sondern an variable Nachricht,kleine Änderung ich bekomme wieder Emails mit Inhalten.
Diese Variable $nachricht gibt es ja nicht einmal...

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

Gruss
cwriter
 
T

Träumer12

#11
Code wird in Kürze gepostet
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.
 
T

Träumer12

#12
Es wäre schön,würdest du deinen Code,der das Problem gelöst hast,posten.
<?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.