Hoi,

Ik ben geen goede webmaster maar een beginner.
Ik heb een email template gedownload van een website. Alles werkt behalve wanneer ik het ingevulde formulier wil versturen geeft het een foutmelding namelijk "Could not send mail! Please check your PHP mail configuration."

Kan iemand mij hiermee helpen? Ik heb er al weken aan besteed voor de oplossing maar het lukt niet... :-(
Ik hoop dat jullie me verder kunnen helpen.

HTML CODE:
<!-- Contact section -->
<section id="contact" class="contact content-section no-bottom-pad">
<div class="container">
<div class="row text-center">
<div class="col-md-12">
<h2>Contact</h2>
<h3 class="caption gray">Neem gerust contact met ons op als je denkt dat wij je ergens mee kunnen helpen.</h3>
</div><!-- /.col-md-12 -->

</div><!-- /.row -->
</div><!-- /.container -->

<div class="container">
<div class="row form-container">

<div class="col-md-8 contact-form">
<h3>Laat een bericht achter</h3>
<form class="ajax-form" id="contactForm" method="post" action="assets/php/contact.php">
<div class="form-group">
<input type="text" class="form-control" id="name" name="name" placeholder="Jouw naam..." value="" required>
</div>
<div class="form-group">
<input type="email" class="form-control" id="email" name="email" placeholder="Jouw email..." value="" required>
</div>
<div class="form-group">
<input type="phone" class="form-control" id="phone" name="phone" placeholder="Jouw telefoonnummer..." value="" required>
</div>
<div class="form-group">
<textarea class="form-control" rows="4" name="message" placeholder="Jouw bericht..." required></textarea>
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-default"><i class="fa fa-paper-plane fa-fw"></i>Verzenden</button>
</div>
</form>
</div><!-- /.contact-form -->


PHP CODE:
<?php
header('Content-type: application/json');

if($_POST)
{
$to_email = "[email protected]"; //Recipient email, Replace with own email here

//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {

$output = json_encode(array( //create JSON data
'type'=>'error',
'text' => 'Sorry Request must be Ajax POST'
));
die($output); //exit script outputting json data
}

//Sanitize input data using PHP filter_var().
$user_name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$user_email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
$phone_number = filter_var($_POST["phone"], FILTER_SANITIZE_NUMBER_INT);
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING);

//additional php validation
if(strlen($user_name)<4){ // If length is less than 4 it will output JSON error.
$output = json_encode(array('type'=>'error', 'text' => 'Naam is te kort of leeg'));
die($output);
}

if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
$output = json_encode(array('type'=>'error', 'text' => 'Vul alsjeblieft een geldig email in'));
die($output);
}


if(!filter_var($phone_number, FILTER_SANITIZE_NUMBER_FLOAT)){ //check for valid numbers in phone number field
$output = json_encode(array('type'=>'error', 'text' => 'Voer alleen cijfers in'));
die($output);
}

if(strlen($message)<3){ //check emtpy message
$output = json_encode(array('type'=>'error', 'text' => 'Sorry, een te kort bericht. Vul iets in'));
die($output);
}

//email subject
$subject ='Bericht via de website Force 10';

//email body
$message_body = $message."\r\n\r\n-".$user_name."\r\n\r\nEmail : ".$user_email."\r\nPhone Number : ". $phone_number ;

//proceed with PHP email.
$headers = 'From: '.$user_name.'<'.$user_email.'>'."\r\n" .
'Reply-To: '.$user_name.'<'.$user_email.'>' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

$send_mail = mail($to_email, $subject, $message_body, $headers);

if(!$send_mail)
{
//If mail couldn't be sent output error. Check your PHP email configuration (if it ever happens)
$output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
die($output);
}else{
$output = json_encode(array('type'=>'success', 'text' => 'Hi '.$user_name .', Bedankt voor je bericht. We zullen zsm contact opnemen.'));
die($output);
}
}


?>

Draai je dit bij een webhosting of op een eigen (ontwikkel)server?

PS: Om spam te voorkomen heb ik je e-mailadres uit je bericht gehaald.
Heb je meer bestanden? Misschien een config bestand waarin je een SMTP server in moet vullen? Zo niet, zijn de SMTP gegevens van de server goed ingevuld? Kun je wel een mail naar jezelf sturen met de functie mail() ?
Hoi,

Alvast bedankt dat jullie me willen helpen.

Ik draai alles op de server van mijn webhost. Niets zelf aangemaakt.

Waar in de code zou ik de SMTP gegevens in moeten invullen dan? Moet ik misschien niet bepaalde SMTP parameters aan de code toevoegen? Zo ja, welke en waar?

Hoe stuur ik een mail naar mijzelf met de functie mail()
(een groentje ben ik he :-))

Ik heb ook nog een code gevonden mbt contact form in een JavaScript. Maar volgens mij heeft dat niets met uitgaande mail server te maken toch?


// Contact form
$(function() {
    // validate contact form on keyup and submit
    $("#contactForm").validate({
        rules: {
            name: {
                required: true,
                minlength: 2,
                lettersonly: true
            },
            email: {
                required: true,
                minlength: 6,
                email: true
            },
            phone: {
                required: true,
                digits: true,
                minlength: 10,
                maxlength: 15
            },
            message: {
                required: true,
                minlength: 6
            }
        },
        messages: {
            name: {
                required: "Vul aub je naam in",
                minlength: "Minimaal 2 karakters",
                lettersonly: "Alleen letters aub!"
            },
            email: {
                required: "Vul aub je emailadres in",
                minlength: "Minimaal 6 karakters",
                email: "Dat is een ongeldige email"
            },
            phone: {
                required: "Vul aub je telefoonnummer in",
                digits: "Alleen cijfers. Geen spaties aub",
                minlength: "Minimaal 10 karakters",
                maxlength: "Maximaal 15 karakters"
            },
            message: {
                required: "Vul aub je bericht in",
                minlength: "Minimaal 6 karakters"
            }
        },
        success: function(label) {
            label.addClass("valid").text("Dat ziet er goed uit!");
        },
        submitHandler: function(element) {

            var ajaxform = $(element),
                url = ajaxform.attr('action'),
                type = ajaxform.attr('method'),
                data = {};

            $(ajaxform).find('[name="submit"]').html('<i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Aan het versturen...');


            ajaxform.find('[name]').each(function(index, value) {
                var field = $(this),
                    name = field.attr('name'),
                    value = field.val();

                data[name] = value;

            });

            $.ajax({
                url: url,
                type: type,
                data: data,
                success: function(response) {
                    if (response.type == 'success') {
                        $("#contactForm").before("<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>" + response.text + "</div>");
                        $(ajaxform).each(function() {
                            this.reset();
                            $(this).find('[name="submit"]').html('<i class="fa fa-paper-plane fa-fw"></i> Send');
                        }).find('.valid').each(function() {
                            $(this).remove('label.valid');
                        })
                    } else if (response.type == 'error') {
                        $("#contactForm").before("<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>" + response.text + "</div>");
                        $(ajaxform).find('[name="submit"]').html('<i class="fa fa-paper-plane fa-fw"></i> Send');
                    }
                }
            });

            return false;
        }
    });

});
Hoi Eelco,

Ik denk dat je even een zijsprongetje moet maken. Jouw script dat je als eerste gepost hebt maakt gebruik van de php mail() functie op regel 57 van het tweede stukje script. Als je nu op php.net naar deze functie kijkt en dan kijkt wat deze functie terug kan geven dan kun je lezen dat dit TRUE is als het aanleveren voor verzending goed gaat of FALSE als het niet lukt. In jouw situatie krijg je dus blijkbaar een FALSE terug. Hoogstwaarschijnlijk komt dat omdat jouw provider de mail() functie heeft uitgeschakeld. Je zou dit in de FAQ van je provider terug moeten kunnen vinden of anders middels de support.
De kans bestaat dat je te horen krijgt dat je de email via SMTP moet versturen. In dat geval is dit script niet toereikend genoeg en kun je het beste gebruik maken van PHPMailer. Dit zal je waarschijnlijk erg ingewikkeld overkomen maar met een beetje hulp van ons is dit wel te doen.
Hoi,

Ik heb wederom contact gehad met mijn host. Ivm veiligheidsmaatregelen kan het formulier niet verstuurd worden vanuit een ander emailadres. Dit moet altijd een eigen server adres zijn (in mijn geval @force10.tv

Zij zeggen: "...omdat je formulier momenteel dusdanig in elkaar zit dat het het ingevulde e-mail adres (bijvoorbeeld het @hotmail adres wat je noemt) als afzender adres gebruikt, maar dit mag dus niet (het from: adres). Het afzender adres moet altijd, in dit geval, een @force10.tv adres zijn, dit moet als statische waarde worden ingesteld."

Wanneer ik een @force10.tv adres in het formulier invul, dan wordt het formulier wel verstuurd.

Verder zeggen zij:" ...maar je zult wel nog zelf het formulier moeten aanpassen zodat de afzender (het FROM en REPLY-TO adres) altijd een @force10.tv adres is."

Maar hoe geef ik in de php code aan dat From: een @force10.tv adres moet zijn? Kan iemand mij helpen met het toevoegen/plaatsen van deze parameters in de code?

Alvast heel erg veel dank!

Groet,
Eelco
$phpMailer->SetFrom("[email protected]", "standaard e-mail naam");

[size=xsmall]Toevoeging op 21/07/2016 12:12:14:[/size]

Ik dat je geen PHPmailer gebruikt, dan kan je dit aanpassen:

$headers = 'From: 'JOUWNAAM'<'JOUW E-mail'>'."\r\n" .
Hoi,

Ik heb de regel aangepast maar het formulier wordt nog niet weg gezonden.


$headers = 'From: 'Force 10' <'[email protected]'>'."\r\n" .
    'Reply-To: '.$user_name.' <'.$user_email.'>' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();


Doe ik nog iets verkeerd?
<?php
$headers = 'From: 'Force 10' <'[email protected]'>'."\r\n" .
?>

versus
<?php
$headers = 'From: [email protected]' . "\r\n" .
?>

Let eens goed op de quotes (' en ")!
en download een php editor zoals bijvoorbeeld Netbeans
zodat er direct dit soort fouten getoond worden.
Hi Frank,

Dank voor je antwoord.

Waar zit de fout in dan? Want in de code wordt " en ' afwisselend gebruikt?

[size=xsmall]Toevoeging op 21/07/2016 19:50:40:[/size]

Hi,

Het is verholpen! Het formulier werkt nu succesvol.

Juiste code is:

$headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: '.$user_name.' <'.$user_email.'>' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

Reageren