Antworten auf deine Fragen:
Neues Thema erstellen

Kontaktformular php ohne Fehler aber keine Mails

Mtzlr

Noch nicht viel geschrieben

Hi, I need HEELLLPP !! Please:uhm:


Ich habe ein PHP Kontaktformular welches auch (ohne Fehler) funktioniert :lol:

PROBLEM .... ich erhalte keine Mail !! Host Provider Strato alle Einstellung die zum Erhalt notwendig sind wurden getätigt.

Da mir das Script keine Fehlermeldung ausgibt, bin ich verzweifelt am suchen und wahrscheinlich seh ich schon den Wald vor lauter Bäumen nicht mehr :lol:


Vielleicht könntet ihr euch den Code mal überfliegen ( in der Hoffnung ihr seht den Fehler ) bitte bitte



Hier der Code:

PHP:
<?php

        error_reporting(E_ALL);

        define('ERROR_1',   'Ihre E-Mailadresse ist nicht vorhanden.');
        define('ERROR_2',   'Ihre E-Mailadresse ist ungültig.');
        define('ERROR_3',   'Ohne Mitteilung kein Kontakt.');
        define('ERROR_4',   'Sie haben keinen Familiennamen angegeben.');
        define('ERROR_5',   'Sie haben keinen Vornamen angegeben.');
        define('ERROR_6',   'Ein leeres Formular nützt nichts.');
        define('ERROR_7',   'Die ausgewählte Datei ist zu groß.');
        define('ERROR_8',   'Die ausgewählte Datei hat nicht den erlaubten Dateitype');


        define('ACTION_PATH',   'emailok.php');

        // E-Mailadresse
        define('MAIL_SENDER',   'kontakt@woeshingehensoll.de');
        //Mail Betreff-Texte
        define('MAIL_SUBJECT_A','Kontaktmitteilung aus Formular');
        // Mail-Betreff für User
        define('MAIL_SUBJECT_K','Ihre Kontaktmitteilung');
        // Charset für E-Mailinhalt
        define('MAILCHARSET',   'utf-8'); # oder z.B. iso-8859-1
        // Starttext für Webmastermail
        define('STARTTEXT',"Mitteilung vom Webformular:\n\r"); # wichtig hier die " belassen!
        // mail Kopie an User und Aktivierung der Checkbox für Mailkopie
        define('MAIL_KOPIE',    1);
        // OPTIONAL - ermöglicht einen Dateiupload
        define('FILE_UPLOAD',   1);
        // dateigröße für Dateiupload
        define('FILE_SIZE', 5000000);

        // absoluter path für das speichern der hochzuladenden Datei
        // die Variable $_SERVER['DOCUMENT_ROOT'] ist das Hauptrootverzeichnis des <a itxtdid="17472199" target="_blank" href="#" style="border-bottom: 0.1em solid darkgreen ! important; font-weight: normal ! important; text-decoration: underline ! important; color: darkgreen ! important; padding-bottom: 1px ! important; background-color: transparent ! important; background-image: none; padding-top: 0pt; padding-right: 0pt; padding-left: 0pt;" classname="iAs" class="iAs">Server</a>
        // ergänze nun das Verzeichnis, in welches die Dateien gespeichert werden und
        // hänge an das Ende ein / (Beispiel: $_SERVER['DOCUMENT_ROOT'] .'/images/
        define('FILE_SAVE_PATH', $_SERVER['DOCUMENT_ROOT'] .'/images/');

        define('ENCTYPE', ' enctype="multipart/form-data"');

        // Seitenangabe, auf welche Seite bei erfolgreicher Übermittlung weitergeleitet werden soll
        define('LOCATION',  $_SERVER['HTTP_HOST'] .'/emailok.php'); # relativer path!

        // %s stehen für einen Platzhalter und gleichzeitig als String
        $USER_MAIL_TEXT  =  "Sehr geehrte/r %s %s %s,\n\n\r";
        $USER_MAIL_TEXT .=  "Ihre Mitteilung hatte folgenden Inhalt:\r\n\n\tStrasse HausNr.: %s %s\r\n\n\tPlz Ort: %s %s\r\n\tTelefon: %s %s\r\n\tE-Mail: %s\r\n\n\t";
        $USER_MAIL_TEXT .=  "Mitteilung:\r\n\t%s";
        if(FILE_UPLOAD) { $USER_MAIL_TEXT .=  "\r\n\n\tDateiname: %s"; }
        $USER_MAIL_TEXT .= "\r\n\nSie erhalten in den nächsten Tagen eine Rückmeldung von mir.";


        // wenn die Liste erweitert werden muss einfach ein , und dann die nächstfolgende
        // Zahl. Bsp: , 4 => 'irgendwas'
        // ); muss immer vorhanden sein
        $htmlAddress = array(0 => 'Optional', 1 => 'Frau', 2 => 'Herr', 3 => '<a itxtdid="17472129" target="_blank" href="#" style="border-bottom: 0.1em solid darkgreen ! important; font-weight: normal ! important; text-decoration: underline ! important; color: darkgreen ! important; padding-bottom: 1px ! important; background-color: transparent ! important; background-image: none; padding-top: 0pt; padding-right: 0pt; padding-left: 0pt;" classname="iAs" class="iAs">Firma</a>');

        // array mit mimeTypen für ein Dateiupload wie in diesem Beispiel mit image.
        // das Array kann beliebig erweitert werden. Wichtig ist nur, dass die Typen entsprechend
        // deklariert werden.
        $fileTypes  = array('image/jpeg', 'image/jpg', 'image/png', 'image/gif');



        /**
         * function _gp($var)
         *
         * @param int/string $var
         * @return int/string
         */
        function _gp($var) {
            if(isset($var)) {

                $val = isset($_POST[$var]) ? $_POST[$var] : '';

                return trim($val);

            }
        }

        /**
         * function _selectAddress($htmlAddress, $select)
         *
         * @param array $htmlAddress
         * @param string $select
         * @return string
         */
        function _selectAddress($htmlAddress, $select) {

            if(is_array($htmlAddress)) {

                $ret = '';

                foreach($htmlAddress AS $k => $v) {

                    if(isset($select) && $select == $k) { $selected = ' selected="selected"'; }
                    else { $selected = ''; }

                    $ret .= "<option value=\"$k\"$selected>$v</option>\n";
                }

                return print $ret;
            } else {

                return print 'Es wurde keine Anrede definiert.';

            }

            return print $ret;

        }

        /**
         * function _E($int)
         *
         * @param integer $int
         * @return string
         */
        function _E($int) {
            $array = array( 1 => ERROR_1,
                            2 => ERROR_2,
                            3 => ERROR_3,
                            4 => ERROR_4,
                            5 => ERROR_5,
                            6 => ERROR_6,
                            7 => ERROR_7,
                            8 => ERROR_8
                            );

            if($array[$int]) return $array[$int];
        }

        /**
         * function checkMail($mailAdresse)
         *
         * @param string $mailAdresse
         * @return boolean
         */
        function checkMail($mailAdresse) {
            if(isset($mailAdresse)) {

                // Prüft auf PHP-Version
                if(phpversion() >= '5.2.0') {
                    // prüft per filter_var und Parameter FILTER_VALIDATE_EMAIL
                    if(!filter_var($mailAdresse, FILTER_VALIDATE_EMAIL)) { return 2; }
                    return false;
                } else {
                    // Prüft ob E-Mailadresse ungültig
                    if(preg_match('/^[^\s@<>]+@[^\s@<>]+\.[a-z]{2,4}$/', $mailAdresse)) { return 2; }
                    return false;
                }
            } else {

                return 1;

            }
        }

        /**
         * checkFile($file)
         *
         * @param array $file
         * @param array $types
         * @return boolean
         */
        function checkFile($file, $types = array()) {

            if( isset($file['tmp_name']) && $file['tmp_name'] != '' &&
                isset($file['name']) && $file['name'] != '') {

                $size = $file['size'];
                $type = $file['type'];


                if($size > FILE_SIZE) { return 7; }
                elseif(isset($types) && !in_array($type, $types)) { return 8; }
                else { return false; }
            }
        }

        /**
         * function fileUpload($file)
         *
         * @param array $file
         * @param integer $action   wird zur prüfung auf Fehler verwendet.
         *                          1 prüft auf Fehler
         *                          2 erlaubt den Dateiupload
         * @return array $array
         */
        function fileUpload($file = array()) {
            if(isset($file['tmp_name']) && isset($file['name'])) {

                $tmp    = $file['tmp_name'];
                $name   = $file['name'];
                $type   = $file['type'];

                $dateiendung = preg_replace('#[a-z+]+/#i', '', $type);
                $filename = date('d_m_Y').'_'. time() .'.'. $dateiendung;

                if(move_uploaded_file($tmp, FILE_SAVE_PATH . $filename)) {

                    $array = array(0 => $filename, 1 => $name);
                    return $array;

                }
            } else {
                return;
            }
        }

        $textmitteilung  = ''; // Variable indiziert
        $error_a         = 0;
        $checkedKopie    = '';
        $fileName        = '';
        $m_anrede = _gp('anrede');

        if(intval(_gp('action')) == 1) {

            // Prüft, ob die E-Mail-Adresse angegeben wurde.
            if($m_email = _gp('email')) {
                $error_a = checkMail($m_email);
            } else {
                $error_a = 1;
            }

            // Prüft, ob eine Mitteilung erfolgte. Wenn nicht, gibt es eine Fehlermeldung.
            if(!$m_mitteilung = _gp('mitteilung')) { $error_a = 3; }


            // Prüft, ob der Familienname angegeben wurde. Wenn nicht erfolgt eine Fehlermeldung.
            if(!$m_fname = _gp('fname')) { $error_a = 4; }

            // Prüft, ob der Vorname angegeben wurde. Wenn nicht, erfolgt eine Fehlermeldung
            if(!$m_vorname = _gp('vorname')) { $error_a = 5; }

            // prüft ob die Uploaddatei erlaubt ist
            if(FILE_UPLOAD === 1 && is_array($_FILES) && checkFile($_FILES['file'], $fileTypes) == 7) { $error_a = 7; }
            if(FILE_UPLOAD === 1 && is_array($_FILES) && checkFile($_FILES['file'], $fileTypes) == 8) { $error_a = 8; }

            // prüfe ob User Mailkopie wünscht
            if($mailKopie = _gp('kopie') == 1) { $checkedKopie = ' checked="checked"'; }

            // Prüft, ob eine Anrede ausgewählt wurde, wenn nicht
            if(!$m_anrede = _gp('anrede')) { $m_anrede = ""; }


            // Prüft, ob eine Strasse angegeben wurde. Wenn nicht, bleibt die Variable leer.
            if(!$m_strasse = _gp('strasse')) { $m_strasse = ''; }

            // Prüft, ob die Hausnummer angegeben wurde. Wenn nicht, bleibt die Variable leer.
            if(!$m_hausnummer = _gp('hausnummer')) { $m_hausnummer = ''; }

            // Prüft, ob eine PLZ angegeben wurde. Wenn nicht, bleibt die Variable leer.
            if(!$m_plz = _gp('plz')) { $m_plz = ''; }

            // Prüft, ob ein Wohnort angegeben wurde. Wenn nicht, bleibt die Variable leer.
            if(!$m_ort = _gp('ort')) { $m_ort = ''; }

            // Prüft, ob eine Vorwahl angegeben wurde. Wenn nicht, bleibt die Variable leer.
            if(!$m_vw = _gp('vw')) { $m_vw = ''; }

            // Prüft, ob die Rufnummer angegeben wurde. Wenn nicht, bleibt die Variable leer.
            if($m_rn = _gp('rn')) { $m_rn = ' / '. $m_rn; }

            // Prüft, ob alle Pflichtfelder vorhanden sind.
            if(!$error_a) {

                $fileNameAdmin  = '';
                $fileNameUser   = '';

                if(FILE_UPLOAD && is_array($_FILES['file'])) {

                    $fileName = fileUpload($_FILES['file']);

                    $fileNameAdmin  = $fileName[0];

                    $fileNameUser   = $fileName[1];

                }

                // Mailbedingungen in From von MIME und HTML
                $header  = 'MIME-Version: 1.0'."\r\n";
                $header .= 'Content-type: text/html; charset='. MAILCHARSET ."\r\n";
                $header .= 'From: <'. MAIL_SENDER .'>';

                if(isset($htmlAddress[$m_anrede])) { $anrede = $htmlAddress[$m_anrede]; }
                else { $anrede = ''; }

                // Mitteilungstext für den Empfänger
                $mailTextWM = sprintf("%s\r\nAnrede: %s\n\rVorname Name: %s %s\n\rStrasse / HsNr: %s %s\n\rPLZ Wohnort: %s %s\n\rTelefon: %s %s\n\rE-Mail: %s\n\rMitteilung:\n\n\r%s\r\n\nDateiname: %s\r\n\n\nMitgeteilt am: %s",
                                        STARTTEXT,
                                        $anrede,
                                        $m_vorname,
                                        $m_fname,
                                        $m_strasse,
                                        $m_hausnummer,
                                        $m_plz,
                                        $m_ort,
                                        $m_vw,
                                        $m_rn,
                                        $m_email,
                                        $m_mitteilung,
                                        $fileNameAdmin,
                                        date('d.m.Y, H:i:s'));

                // E-Mail an Seiteninhaber wird gesendet.
                mail(MAIL_SENDER, MAIL_SUBJECT_A, $mailTextWM, $header);

                // Bestätigungsmail an Absender
                if(defined('MAIL_KOPIE') && MAIL_KOPIE == 1 && $mailKopie == 1) {

                    // Textzusammenstellung für den Absender
                    $msgUser = sprintf( $USER_MAIL_TEXT,
                                        $anrede,
                                        $m_vorname,
                                        $m_fname,
                                        $m_strasse,
                                        $m_hausnummer,
                                        $m_plz,
                                        $m_ort,
                                        $m_vw,
                                        $m_rn,
                                        $m_email,
                                        $m_mitteilung,
                                        $fileNameUser);


                    // Senden der Bestätigungsmail an den Formularausfüllenden.
                    mail($m_email, MAIL_SUBJECT_K, $msgUser, $header);

                }

                // Nun leite um auf die Empfangsbestätigungs-Seite emailok.php.
                header('Location: '/emailok.php);
                exit();
            }
        }
        ?>

/* ------------- IM BODYBEREICH -----------------

        <?php
        // Bereich für Fehlerausgabe
        if((int)$error_a) {

            echo '<p align="center" class="error">'. _E($error_a) .'</p>';
        }
        ?>

        <form action="emailok.php" method="post"<?php echo ENCTYPE; ?>>
        <input type="hidden" name="action" value="1" />
        <table width="70%" cellspacing="2" cellpadding="5" border="0">
        <tr>
            <td colspan="2"><p align="center"><b><h2>Kontakt</h2></b></p><p align="right">* = Pflichtfelder (werden geprüft)</td>
        </tr><tr>
            <td>Anrede</td>
            <td><select name="anrede">
                    <?php
                    _selectAddress($htmlAddress, $m_anrede);
                    ?>
                  </select>
            </td>
        </tr><tr>
            <td>*Vorname</td>
            <td><input type="text" name="vorname" size="40" value="<?php if(isset($_POST['vorname'])) { echo $_POST['vorname']; } ?>" /></td>
        </tr><tr>
            <td>*Name</td>
            <td><input type="text" name="fname" size="40" value="<?php if(isset($_POST['fname'])) { echo $_POST['fname']; } ?>" /></td>
        </tr><tr>
            <td>*Strasse / Haus.-Nr. </td>
            <td>
                <input type="text" name="strasse" size="40" maxlength="100" value="<?php if(isset($_POST['strasse'])) { echo $_POST['strasse']; } ?>" />
                <input type="text" name="hausnummer" size="5" maxlength="8" value="<?php if(isset($_POST['hausnummer'])) { echo $_POST['hausnummer']; } ?>" />
            </td>
        </tr><tr>
            <td>*PLZ / Wohnort </td>
            <td>
                <input type="text" name="plz" size="5" maxlength="5" value="<?php if(isset($_POST['plz'])) { echo $_POST['plz']; } ?>" />
                <input type="text" name="ort" size="40" maxlength="100" value="<?php if(isset($_POST['ort'])) { echo $_POST['ort']; } ?>" />
            </td>
        </tr><tr>
            <td>*Telefon</td>
            <td>
                <input type="text" name="vw" size="10" maxlength="5" value="<?php if(isset($_POST['vw'])) { echo $_POST['vw']; } ?>" /> /
                <input type="text" name="rn" size="10" maxlength="15" value="<?php if(isset($_POST['rn'])) { echo $_POST['rn']; } ?>" />
            </td>
        </tr><tr>
            <td>*Ihre E-Mailadresse</td>
            <td>
                <input type="text" name="email" size="30" maxlength="50" value="<?php if(isset($_POST['email'])) { echo $_POST['email']; } ?>" />
            </td>
        </tr><tr>
            <td valign="top">*Mitteilung</td>
            <td>
                <textarea name="mitteilung" cols="60" rows="10"><?php if(isset($_POST['mitteilung'])) { echo $_POST['mitteilung']; } ?></textarea>
            </td>
        </tr>
        <?php
        if(MAIL_KOPIE === 1) {
        ?>
       <tr>
            <td>Wünschen Sie eine Kopie</td>
            <td><input type="checkbox" value="1" name="kopie"<?php echo $checkedKopie; ?> /></td>
        </tr>
        <?php
        }
        if(FILE_UPLOAD === 1) {
        ?>
        <tr>
            <td>Datei anhängen</td>
            <td><input type="file" size="50" name="file" /></td>
        </tr>
        <?php } ?>
        <tr>
            <td colspan="2">
                <p align="center"><input type="submit" value="Mittelung senden" /></p>
            </td>
        </tr>
        </table>
        </form>


Wäre echt cool wenn ihr den Fehler findet damit dann auch endlich mal ne mail ankommt ...... das wäre super ;)
 
Zuletzt bearbeitet von einem Moderator:

taffrot

Hat immer langweile...

AW: Kontaktformular php ohne Fehler aber keine Mails

Hey,

1. Hast du das selber geschrieben?
2. Wenn nein, dann versuch es selber :).
3. Wenn ja, stell alle Fehlermeldungen an und schau mal ob was rauskommt.

cheers
 

Mtzlr

Noch nicht viel geschrieben

AW: Kontaktformular php ohne Fehler aber keine Mails

Fehler gefunden da ich eine Emailadresse mit Umlaute habe muß ich die xn-- schreibweise anwenden OLEHH OLEE unfassbar aber wahr :lol:
 

M3g4Star

Nicht mehr ganz neu hier

AW: Kontaktformular php ohne Fehler aber keine Mails

Wieso nutzt eigentlich keiner den PHPMailer ?? Wär mir persönlich echt zu viel arbeit dort so viel Code zusammen zu stottern.

BTW ... es gibt in diesem Forum einen PHP Tag mit dem man deinen Code ein wenig highlighten kann. Nur bezüglich der Lesbarkeit.

Gruß M3g4
 

saila

Moderatorle

AW: Kontaktformular php ohne Fehler aber keine Mails

Warum man nicht immer PHPMailer nutzt?!

Weil das z.T. overhead ist. Zum einen muss man die gesamte Klasse einbinden, inizialisieren und dann letztlich den gleichen Kram eintragen wie auch für mail(). Zumal man für ein Kontaktformular kein PHPMailer benötigt, da es keine Massenmails sind.

PHPMailer nutzt man unteranderem für ein ständig zu nutztenden Mailverkehr. Und da würde ich z.B. lieber selbst eine Klasse definieren die (wie auch PHPMailer) auch smtp anschubst.

Deshalb.
 

Mtzlr

Noch nicht viel geschrieben

AW: Kontaktformular php ohne Fehler aber keine Mails

Das Script ist komplett und funktioniert einwandfrei .... alle Komment´s sind zu Erklärung auch mit drin .... könnt ihr verwenden und ausprobier´n ... klappt alles vom feinsten ;-)
 

crx_ed9

Noch nicht viel geschrieben

AW: Kontaktformular php ohne Fehler aber keine Mails

Wieso nutzt eigentlich keiner den PHPMailer ?? Wär mir persönlich echt zu viel arbeit dort so viel Code zusammen zu stottern.

BTW ... es gibt in diesem Forum einen PHP Tag mit dem man deinen Code ein wenig highlighten kann. Nur bezüglich der Lesbarkeit.

Gruß M3g4


warum nutzt man nicht mail()?

Achja zusammenstottern... sagt eigentlich alles.

Wer laufen kann braucht nicht zu grabbeln...


ist selbermachen so schwer und so schlecht ??

Sorry hanco .. du bist schuld, dass ich jetzt echt scheiß laune habe..
 

Mtzlr

Noch nicht viel geschrieben

AW: Kontaktformular php ohne Fehler aber keine Mails

Vielen Dank an alle beteiligten Helfer ..... aber zum aufregen und schlechte Laune verbreiten ist diese Forum glaube nicht geeignet ;-)
 
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

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben