Antworten auf deine Fragen:
Neues Thema erstellen

Wieso verschickt mein Formular keine Mail?

besercer

Noch nicht viel geschrieben

Huhu,

ich wollte mal fragen ob einer von euch mir erklären kann wieso er im Nachfolgenden Code keine E-Mail versendet UND ob ihr an der Prüfung noch andere Sachen mit einbauen würdet. - Danke :)

PHP:
<?php
    if($_POST['absenden']=='Absenden'){ #Wenn der Absende Butten gedrückt wird dann...
        $fehler = false; #Fehlerauf false setzen
        $errormsg = "";    #Fehlermeldung leeren
        foreach($_POST as $feld => $value ){ #geht jeden Eintrag vom Formular durch und setzt den Index in die Variable $feld und den Wert in die Variable $value
            $arr_post[$feld] = preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$value);#erzeugt eine Variable mit einem sauberen Wert - preg_replace sucht nach.. und ersetzt durch.. in..
            $arr_post[$feld] = strip_tags($arr_post[$feld]);#entfernt Html und Php Tags
            $arr_post[$feld] = trim($arr_post[$feld]);#entfernt Whitespaces an Anfang und Ende
        }
        if (!preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", $arr_post['email'])){#Wenn nich dieser Zeichen im Wert von der Email sind dann...
            $errormsg .= "Ihre E-Mail-Adresse ist ungültig <br />";#Füge die Fehlermeldung an
            $fehler = true;#Setzte Fehler auf true
        }
        if (empty($arr_post['name'])){#Wenn das Feld name leer ist dann...
            $errormsg .= "Das Feld Name ist nicht ausgefüllt!<br />";#Füge die Fehlermeldung an
            $fehler = true;#Setzte Fehler auf true
        }
        if (empty($arr_post['telefonnr'])){#Wenn das Feld der Telefonnr. leer ist dann..
            $errormsg .= "Das Feld Telefonnummer ist nicht ausgefüllt!<br />";#Füge die Fehlermeldung an
            $fehler = true;#Setzte Fehler auf true
        }
        if (empty($arr_post['nachricht'])){#Wenn das Feld der Nachricht leer ist dann...
            $errormsg .= "Das Feld Nachricht ist nicht ausgefüllt!<br />";#Füge die Fehlermeldung an
            $fehler = true;#Setzte Fehler auf true
        }
        if($fehler == false){#Wenn die Variable fehler auf false ist dann..
            $msg = $arr_post['nachricht']."\n";#Erstelle die Nachricht
            $msg .= "Telefonnummer: ".$arr_post['telefonnr']."\n";#Füge die Telefonnr. an
            $msg .= "E-Mail-Adresse:".$arr_post['email'];#Füge die E-Mail-Adresse an
                
            mail("info@buecherstube.de","Kontaktanfrage von".$arr_post['name'],$msg);#Sende die Email ab
        }else{#Ansonsten...
            $errormsg = "Beim Versand Ihrer Nachricht sind folgende Fehler aufgetretten:<br /><br />".$errormsg;#Für die Fehlermeldungen an den Text
        }
    }
?>
<h2>&raquo; Kontaktformular</h2>
<?php echo $errormsg;?>
<form method='post' action='<?php echo $_SERVER['PHP_SELF']; ?>'>
    <input type='text' name='name' placeholder='Ihr Name' required='required'/>
    <input type='email' name='email' autocomplete='off' placeholder='Ihre E-Mail Adresse' required='required' />
    <input type='tel' name='telefonnr' placeholder='Ihre Telefonnummer' />
    <textarea name='nachricht' placeholder='Geben Sie Ihre Nachricht ein...' required='required' class='textarena'></textarea>
    <input type='submit' value='Absenden' class='absenden' name='absenden' />
    <script type='text/javascript'>
        $('input[placeholder]').placeholder({ color: '#323232' });
        $('textarea[placeholder]').placeholder({ color: '#323232' });
    </script>
</form>
 

Robbyn-

PHP / Flex Programmierer

AW: Wieso verschickt mein Formular keine Mail?

Für deine Email-Kontrolle würde ich folgendes verwenden:

PHP:
if(!filter_var(filter_var($arr_post['email'], FILTER_SANITIZE_EMAIL), FILTER_VALIDATE_EMAIL)){

und Allgemein alle anderen Werte durch folgenden Code schleusen:

PHP:
$back = trim(htmlentities(str_replace(array("\r\n", "\r", "\0"), array("\n", "\n", ''), $myVariable), ENT_QUOTES, 'UTF-8'))


-------------


Wegen deinen Problem mit der Email:

Gibt es eine genaue Fehlermeldung oder wo testest du diese Sache? lokal oder auf einen online Server?

Wenn lokal dann kann es sein das du keinen Mailserver besitzt, oder angeschalten, hast.
 

besercer

Noch nicht viel geschrieben

AW: Wieso verschickt mein Formular keine Mail?

Danke für die schnelle Antwort aber so richtig helfen tut mir das leider auch noch nicht da ich ganz weit am anfang von php bin :D

Also hiervon habe ich das ganze versendet


sprich nicht local.

Was soll ich den jetzt mit dem Code machen? Den ersten soll ich doch bestimmt so einbauen odeR?

PHP:
if(!filter_var(filter_var($arr_post['email'], FILTER_SANITIZE_EMAIL), FILTER_VALIDATE_EMAIL)){  mail("info@email.de","Kontaktanfrage von".$arr_post['name'],$msg);}#Sende die Email ab
odeR? aber was meinst du mit dem zweiten ? sorry falls es eventuell klar sein sollte aber wie gesagt, ich bin gaaanz am anfang von php:p
 

randacek_pro

Mod | Forum

AW: Wieso verschickt mein Formular keine Mail?

Hallo,

ist dein Server für das Versenden von Emails konfiguriert? Also ist in den Servereinstellungen eine Email, ein Konto, eingerichtet, über welches das Kontaktformular an deine Ziel-Email (info@bucher...) gesendet werden soll?

Wenn nicht, müsstest du das, wenn der Server nicht lokal ist, mal über deinen Hoster abklären...
Oder wenn lokal einen Mailserver installieren...

Ich würde noch ne Kleinigkeit ergänzen:
PHP:
if(isset($_POST['absenden'])=='Absenden')

Viele Grüße
 

Tr3icio

Nicht mehr ganz neu hier

AW: Wieso verschickt mein Formular keine Mail?

PHP:
if(isset($_POST['absenden'])=='Absenden')

php.net schrieb:
Gibt TRUE zurück, wenn var existiert einen von NULL verschiedenen Wert hat, andernfalls FALSE.

Du vergleichst einen Wert der nur TRUE oder FALSE sein kann mit einem String und das auch noch schwach?
 

randacek_pro

Mod | Forum

AW: Wieso verschickt mein Formular keine Mail?

Versteh nicht ganz was du meinst...
Kann sein, dass ich mich irre, ich habs halt nur mal so gelernt, damit nur "wenn POST" die Strings verglichen werden..., also nicht bei GET
Bitte sieh das nicht als Ironie, aber ich lasse mich gern belehren.
Wie sollte es aussehen?

Viele Grüße
 

besercer

Noch nicht viel geschrieben

AW: Wieso verschickt mein Formular keine Mail?

verwirrt mich nicht :D

Also der Server sollte eigentlich so eingestellt sein das er Mails versenden kann. Könnte der Fehler vielleicht wo anders im code liegen?
 

jimny1999

Nicht mehr ganz neu hier

AW: Wieso verschickt mein Formular keine Mail?

Du könntest den ganzen Code zunächst mal auf das Wesentliche reduzieren. Dass Du keine Mail erhältst, könnte ja irgendwie mit der "mail()"-Funktion zusammenhängen.

Ich würde also zunächst mal ein Formular bauen, dass nur aus einem Sende-Button besteht und eine Mail mit vorbelegtem Text abschickt, nur mal zum Testen, ob dann eine Mail ankommt. Wenn's dann immer noch nicht geht, vielleicht mal einen Blick in die Logs werfen - wenn möglich - oder in PHP das die Ausgabe von Fehlermeldungen einschalten ().

Falls es mit dem einfachen Formular funktioniert, kannst Du das dann erweitern. Nach jeder Funktion, die Du hinzufügst, versuchst Du wieder eine Mail zu versenden. Usw.
 

mindraper

me[code].Java(Script)

AW: Wieso verschickt mein Formular keine Mail?

hi.

@randacek_pro:
was tr3icio meint ist folgendes: isset() prüft, ob eine variable existiert und != NULL ist. falls dies zutrifft, gibt isset() den boolschen wert TRUE zurück. in deiner if-abfrage steht also als prüfkriterium

if (TRUE == 'absenden')

solange $_POST['absenden'] alles ist außer der wert NULL. das ist aber kein wirkliches kriterium, weil

1.)
folgende $_POST['absenden']-werte ebenfalls TRUE ergeben würden:
- array
- object
- string
- TRUE
- 1, 2, 3, ... 9999999999999, ...
- etc.

sogar folgendes wird von isset() als TRUE ausgewertet:

PHP:
$_POST['foo'] = false;

was auch hier zu einer prüfung von

if (TRUE == 'absenden')

führen würde. und

2.)
alle werte außer 0, FALSE und NULL bei einer schwachen prüfung (==) immer als TRUE gewertet werden. damit würde das prüfkriterium deiner if-abfrage lauten:

if (TRUE)

was man de facto wohl nicht als prüfung bezeichnen kann, weil TRUE immer wahr wäre.

besser wäre, du würdest statt

if (isset(...) ... )

folgende if-abfrage machen:

PHP:
if (isset($_POST['absenden']) && !empty($_POST['absenden']) && $_POST['absenden'] === 'absenden') {
   # code...
}

was dem folgenden frage-katalog gleich käme:
- ist $_POST['absenden'] vorhanden?
- ist $_POST['absenden'] nicht leer?
- ist $_POST['absenden'] nicht nur gleich, sondern auch typengleich mit dem string 'absenden'?



ich hoffe die frage wäre damit erklärt :)
 

randacek_pro

Mod | Forum

AW: Wieso verschickt mein Formular keine Mail?

ich hoffe die frage wäre damit erklärt :)

Ja, DIE Frage wäre damit geklärt ;)
Danke dir mindraper und auch tr3icio für den Gedankenanstoß!
Wenigstens konnte ich dadurch etwas Wichtiges lernen, denn offenbar wäre mein Absicherungsversuch ohne die starke Prüfung nutzlos...
Hab halt nicht ständig mit PHP zu tun :)
Und vielleicht hilfts nicht nur mir weiter, sondern auch anderen, evtl. auch dem TO.

Liebe Grüße
 

mindraper

me[code].Java(Script)

AW: Wieso verschickt mein Formular keine Mail?

hi

@randacek_pro: no probs man! :)

@besercer:
ich habe keine ahnung, wie weit du mittlerweile mit deinem emailscript bist. ich setze eigentlich immer auch die header informationen, wenn ich eine mail verschicke. die kommen als 4ter parameter an die mail()-methode.

siehe hier: php.net

der grund ist, dass manche mail-server ansonsten zicken.

außerdem könnte es sein, dass dein hoster noch spezielle forderungen hat. bei hosteurope z. b. wird noch ein 5. parameter in mail() gefordert, ansonsten werden die mails gar nicht versendet. möglicherweise ist das bei dir genauso. stichwort: faq.

hoffe das hilft
 

besercer

Noch nicht viel geschrieben

AW: Wieso verschickt mein Formular keine Mail?

Leider bin ich noch nicht wirklich weiter aber ich werde nochmal weiter gucken. Vielleicht liegt es ja wirklich am Server. Liegt bei Hetzner also falls wer was weiß..^^
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben