J'essaye d'envoyer le contenu d'un formulaire sur une boite mail tout en affichant deux messages : "Email is sending" et "Email bien envoyé".
Avec le code suivant, j'arrive presque à ce que je veux faire mais un problème demeure : lorsque je valide l'envoi du formulaire en cliquant sur le bouton submit, les deux messages s'affichent correctement mais je reçois sur ma boite mail deux emails ! Un vide et un correct ..
En bidoullant le code, j'arrive soit à ne m'envoyer qu'un seul mail mais sans afficher les 2 messages "Email is sending" et "Email bien envoyé", soit à afficher les messages mais cela m'envoie 2 mails.
Je sais que d'autres sujets du même genre ont été déjà ouvert, et j'ai du en lire au moins une dizaine mais je bloque toujours.
Si vous avez des idées, merci d'avance de m'aiguiller !
Voici mes codes correspondant (envoi de deux mails + affichage des messages).
FORMULAIRE (contact.html) :
<form id="main-contact-form" class="contact-form" method="post" action="sendemail.php">
<div class="col-sm-5 col-sm-offset-1">
<div class="form-group">
<label>Name *</label>
<input type="text" name="nom" class="form-control" required="required">
</div>
<div class="form-group">
<label>Email *</label>
<input type="email" name="email" class="form-control" required="required">
</div>
</div>
<div class="col-sm-5">
<div class="form-group">
<label>Subject *</label>
<input type="text" name="subject" class="form-control" required="required">
</div>
<div class="form-group">
<label>Message *</label>
<textarea name="message" id="message" required="required" class="form-control" rows="8"></textarea>
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-primary btn-lg">Envoyer</button>
</div>
</div>
</form>
CODE PHP (sendemail.php) :
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Votre Email a été correctement envoyé'
);
$name = @trim(stripslashes($_POST['nom']));
$email = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = '[email protected]';//replace with your email
$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
?>
CODE JS (main.js) :
Code : Tout sélectionner
jQuery(function($) {'use strict',
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
$.post("sendemail.php", $(".contact-form").serialize());
form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
});
});
});