Bonjour à toutes et à tous !

Voilà je vous expose mon problème, j'ai eu beau cherché je ne vois vraiment pas ce qui cloche.
J'ai un formulaire de contact codé en HTML, javascript et PHP.

Il m'indique que le message n'a pas pu être envoyé, or il m'envoie bien un message, mais vide.

Ci-dessous la partie HTML:

<div id="contact_form">
                <div class="two-thirds column marginTop formWrap">
                    <form action="#" method="post" class="contactForm">
                        <div class="formSecWrap">
                            <label for="form_name">Nom</label>
                                <input type="text" id="form_name" name="form_name" value="" />
           
                            <label for="form_email">Email</label>
                                <input type="text" name="form_email" id="form_email" value="" />
                      
                            <label for="form_subject">Sujet</label>
                                <input type="text" name="form_subject" id="form_subject" value="" />
                        </div>
                        <div class="formSecWrap formSecWrap2">
                            <label for="form_message">Message</label>
                                <textarea class="textarea" name="form_message" id="form_message"></textarea>
                        
                                <input class="button" id="submit-form" type="submit" name="submit" value="Envoyer!" />
                        </div>
                        <div id="success"></div>
                    </form>
                </div>
            </div>



Ci-dessous le Javascript:

(function($){
	$(document).ready(function() {
		$('#submit-form').click(function(e){
		
			e.preventDefault();
            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
            var name  = $('#form_name').val(),
				email  = $('#form_email').val(),
				subject  = $('#form_subject').val(),
				message  = $('#form_message').val(),
				data_html,
				success = $('#success');
				
    		if(name == "")
                $('#form_name').val('Please enter your name.');
				
			if(subject == "")
                $('#form_subject').val('Please enter your name.');

            if(email == ""){
                $('#form_email').val('Your email is required.');
            }else if(reg.test(email) == false){
                $('#form_email').val('Invalid Email Address.');
            }
			
            if(message == "")
                $('#form_message').val('Message is required.');

            if(message != "" && name != "" && reg.test(email) != false) {
            	data_html = "name=" + name + "&email="+ email + "&message=" + message + "&subject="+ subject;

                //alert(data_html);
                $.ajax({
                    type: 'POST',
                    url: 'contact_form.php',
                    data: data_html,
                    success: function(msg){
						
						if (msg == 'sent'){
                        	success.html('<div class="alert alert-success">Message <strong>successfully</strong> sent!</div>')  ;
                            $('#form_name').val('');
							$('#form_email').val('');
							$('#form_message').val('');
                        }else{
                            success.html('<div class="alert alert-error">Message <strong>not</strong> sent! Please Try Again!</div>')  ; 
                        }
                    }
                });
    
            }
            return false;
        });
	});
})(jQuery);




Et enfin le PHP:

<?php
$field_name = $_POST['form_name'];
$field_email = $_POST['form_email'];
$field_message = $_POST['form_message'];

$mail_to = '***';
$subject = 'Message du site '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
	<script language="javascript" type="text/javascript">
		alert('Thank you for the message. We will contact you shortly.');
		window.location = 'index.html';
	</script>
<?php
}
else { ?>
	<script language="javascript" type="text/javascript">
		alert('envoi échoué');
		window.location = 'index.html';
	</script>
<?php
}
?>



Si quelqu'un peut m'éclairer je lui en serai éternellement reconnaissant Smiley langue

Merci d'avance et bon week end à vous !

Cordialement,

Arnaud
knelite a écrit :

<?php
$field_name = $_POST['form_name'];
$field_email = $_POST['form_email'];
$field_message = $_POST['form_message'];

$mail_to = '***';
$subject = 'Message du site '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

[…]

Il y a au moins deux erreurs à ce point là (il y en a peut-être d’autres encore dans le JavaScript et le HTML, que je n’ai pas lu).

Le corps du message doit lui aussi être au format RFC 2822, c’est à dire que les lignes doivent se terminer par des CR-LF et non-pas par des LF (fin de ligne UNIX).

Ensuite, il y a une obligation sur la lonheur des lignes, qui ne doivent faire plus de 998 caractères (CRLF exclus), obligatoirement, et pas plus de 78 caractères, de préférence, d’après RFC 2822 — 2.1.1. Line Length Limits et pas plus de 70 caractères pour la fonction `mail` de PHP (le CRLF me semblant exclus implicitement).

Il faudrait déjà corriger ça, et voir si ça fonctionne ou s’il reste des erreurs.
Modifié par hibou57 (21 Jan 2016 - 16:19)
Bonjour,

De ce que je vois, tu essaies d'envoyer les paramètres "name", "email", "message" et "subject", et dans ton PHP, tu essaies de lire les paramètres 'form_name', 'form_email' et 'form_message', tu vois le schmilblick... !?