• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kontakt Script Email kommt nicht an.

I

Intersect

Guest
Hallo.

Ich habe mir ein Kontakt Formular erstellt, es funktioniert alles wie soll. Allerdings kommt die Email am ende nicht an. Ich weiß nicht warum, vielleicht sieht ihr warum.

Hier nochmal auf einen Blick:
Contact PHP:
Code:
<?php

// Set email variables
$email_to = '@live.de';<!--ZENSIERT, daran liegt das Problem nicht-->
$email_subject = 'Request';

// Set required fields
$required_fields = array('fullname','subject','comment','email');

// set error messages
$error_messages = array(
    'fullname' => 'Please enter a Name to proceed.',
    'subject' => 'Please enter a subject to continue.',
    'comment' => 'Please enter your Message to continue.',
    'email' => 'Please enter a valid Email Address to continue.'
);

// Set form status
$form_complete = FALSE;

// configure validation array
$validation = array();

// check form submittal
if(!empty($_POST)) {
    // Sanitise POST array
    foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));
    
    // Loop into required fields and make sure they match our needs
    foreach($required_fields as $field) {        
        // the field has been submitted?
        if(!array_key_exists($field, $_POST)) array_push($validation, $field);
        
        // check there is information in the field?
        if($_POST[$field] == '') array_push($validation, $field);
        
        // validate the email address supplied
        if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
    }
    
    // basic validation result
    if(count($validation) == 0) {
        // Prepare our content string
        $email_content = 'New Website Comment: ' . "\n\n";
        
        // simple email content
        foreach($_POST as $key => $value) {
            if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";
        }
        
        // if validation passed ok then send the email
        mail($email_to, $email_subject, $email_content);
        
        // Update form switch
        $form_complete = TRUE;
    }
}

function validate_email_address($email = FALSE) {
    return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
}

function remove_email_injection($field = FALSE) {
   return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Contact Form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="wp-content/uploads/2013/07/contact/contact/css/contact.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
    <script type="text/javascript" src="wp-content/uploads/2013/07/contact/contact/validation/validation.js"></script>
    
    <script type="text/javascript">
var nameError = '<?php echo $error_messages['fullname']; ?>';
        var subjectError = '<?php echo $error_messages['subject']; ?>';
        var commentError = '<?php echo $error_messages['comment']; ?>';
        var emailError = '<?php echo $error_messages['email']; ?>';
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
    </script>
</head>
<body onload="MM_preloadImages('contact/images/x.png')">

<div id="formWrap">
<div id="form">
<?php if($form_complete === FALSE): ?>
    <form action="#contact" method="post" id="comments_form">
    <div class="row">
    <div class="label">Name:</div><!--end .label -->
    <div class="input">
    <input type="text" id="fullname" class="datail" name="fullname" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>" /><?php if(in_array('fullname', $validation)): ?><span class="error"><?php echo $error_messages['fullname']; ?></span><?php endif; ?>

    </div><!--end input -->
    <div class="context"></div><!--end .context -->
    </div><!--end .row -->
    
    <div class="row">
    <div class="label">Subject:</div><!--end .label -->
    <div class="input">
    <input type="text" id="subject" class="datail" name="subject" value="<?php echo isset($_POST['subject'])? $_POST['subject'] : ''; ?>" /><?php if(in_array('subject', $validation)): ?><span class="error"><?php echo $error_messages['subject']; ?></span><?php endif; ?>
    </div><!--end input -->
    <div class="context"></div><!--end .context -->
    </div><!--end .row -->
    
    <div class="row">
    <div class="label">Message:</div><!--end .label -->
    <div class="input2">
    <textarea id="content" name="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea><?php if(in_array('comment', $validation)): ?><span class="error"><?php echo $error_messages['comment']; ?></span><?php endif; ?>
    </div><!--end input -->
    </div><!--end .row -->
    
    <div class="row">
    <div class="label">E-Mail</div><!--end .label -->
    <div class="input">
    <input type="text" id="email" class="datail" name="email" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" /><?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?>
    </div><!--end input -->
    <div class="context"></div><!--end .context -->
    </div><!--end .row -->
    
    <div class="submit">
    <input type="submit" id="submit" name="submit" value="Submit" />
    
    </div><!--end .submit -->
    
    </form>
<?php else: ?>
<p style="text-align: left;">Thank you for your Message!</p>

<script type="text/javascript">
setTimeout('ourRedirect()', 3000)
function ourRedirect(){
    location.href='http://www.wordpress-works.bplaced.net/Contact/contact.php'
    }
</script>

<?php endif; ?>
</div><!--end form -->
</div><!--end formWrap -->
</body>
</html>

Validation.js:

Code:
window.addEvent('domready', function() {
    // Get the form
    var form = $('comments_form');
    
    //  if the form is found...
    if (form) {
        // obtain error fields
        var name = $('fullname');
        var email = $('email');
        var comment = $('comment');

        // Set the default status
        var isValid = true;

        // input error function for the error messages
        var addError = function (field, msg) {
            field.addClass('error'); // Add error class to field
            var error = field.getParent().getElement('span') || new Element('span', {'class': 'error'}); // add error message if not already placed
            error.set('text', msg); // error text msg
            error.inject(field, 'after'); // Insert error message after field
        };

        // detach error function used to delete any error messages and remove the error class
        var removeError = function (field) {
            field.removeClass('error'); // Remove error class from form fields
            var error = field.getParent().getElement('span'); // find any existing error messages

            // destroy if error message
            if (error) {
                error.destroy();
            }
        };

        //  insert submit form event
        form.addEvent('submit', function (e) {
            // Test name length
            if (name.get('value').length === 0) {
                isValid = false;
                addError(name, nameError);
            } else {
                isValid = true;
                removeError(name);
            }

            // check email length
            if (email.get('value').length === 0) {
                isValid = false;
                addError(email, emailError);
            // check email validity
            } else if (!email.get('value').test(/^([a-zA-Z0-9\+_\-]+)(\.[a-zA-Z0-9\+_\-]+)*@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/)) {
                isValid = false;
                addError(email, emailError);
            } else {
                isValid = true;
                removeError(email);
            }

            // check comment length
            if (comment.get('value').length === 0) {
                isValid = false;
                addError(comment, commentError);
            } else {
                isValid = true;                        
                removeError(comment);
            }

            // If form invalid then stop event happening
            if (!isValid) {
                e.stop();
            }
        });
    }    
});

Ich habe letztendlich mit hilfe eines Tutorials erstellt und etwas angepasst das Subject noch eingefügt ist. Außerdem habe ich das script über Wordpress und einem PHP Plugin eingebunden. Ohne das Plugin kann ich keine php Dateien in Seiten oder Artikel einbinden. Ansonst habe ich noch was am Design geändert. Damit Ihr wisst woran es vielleicht liegen könnte.

Vielen Dank!
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Ich hab mir den Code jetzt nicht genau angesehen.
Ich habe mir ein Kontakt Formular erstellt, es funktioniert alles wie soll. Allerdings kommt die Email am ende nicht an

Was genau heißt das? Wird der Mail-Befehl ausgeführt, aber die Mail kommt nicht an? Dann liegt's am Mailen, an den Parameter bzw. am Mailkonto und nicht am Formular oder PHP.
Oder wird der Mail-Befehl gar nicht erst ausgeführt? Du müsstest dann schauen, welcher Code ausgeführt wird und welcher nicht. Da ich vermute, dass das Formular noch nicht im Echtbetrieb läuft, kannst Du das in PHP am einfachsten erledigen, indem Du an verschiedenen Stellen den die-Befehl einfügst, z.B. direkt vor dem mail-Befehl: die("$email_to, $email_subject"). Dann weißt Du, ob diese Stelle überhaupt erreicht wird.

HTH
Alex
 
Immer wieder gerne genommen:

Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.


Außerdem verzichte auf die mail-Funktion von PHP, sondern setze eine fertige Klasse ein, w.z.B. den phpMailer
 
Werbung:
Hey,

ich würde an deiner Stelle alles selber schreiben. Ist ja auch nicht so die große Sache. Um in PHP Mails zu verschicken solltest eine Klasse benutzen wie bdt schon sagte. Ich kann dir den phpmailer empfehlen. So umgehst du lästige Codierung und Fehlerbehebung was schon lange vor dir gelöst wurde, außerdem kannst du eventuelle Einschränkungen von deinem Anbieter umgehen.

Gutes Gelingen! :cool:
 
ich hab den Fehler gefunden ^^, war nichts großes mehrere schreibfehler.
Danke!
 
Zurück
Oben