IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Envoi de mail


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Par défaut Envoi de mail
    Bonjour à tous,

    J'utilise un formulaire mail mais le mail ne part pas et j'obtiens le message "Cet e-mail ne peut être envoyé. Merci de contacterSENDER_EMAIL"
    Je vous laisse tester sur la page : http://www.locationsaintcoulomb.fr/contact.php.

    J'ai beau chercher dans tous les sens mais mes capacités étant limitées, impossible de trouver d'où vient le problème...

    Le script ajax :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    $(document).ready(function (e){
    		$("#frmContact").on('submit',(function(e){
    			e.preventDefault();
    			$("#mail-status").hide();
    			$('#send-message').hide();
    			$('#loader-icon').show();
    			$.ajax({
    				url: "contact_check.php",
    				type: "POST",
    				dataType:'json',
    				data: {
    				"name":$('input[name="name"]').val(),
    				"email":$('input[name="email"]').val(),
    				"phone":$('input[name="phone"]').val(),
    				"content":$('textarea[name="content"]').val(),
    				"g-recaptcha-response":$('textarea[id="g-recaptcha-response"]').val()},				
    				success: function(response){
    				$("#mail-status").show();
    				$('#loader-icon').hide();
    				if(response.type == "error") {
    					$('#send-message').show();
    					$("#mail-status").attr("class","error");				
    				} else if(response.type == "message"){
    					$('#send-message').hide();
    					$("#mail-status").attr("class","success");							
    				}
    				$("#mail-status").html(response.text);	
    				},
    				error: function(){} 
    			});
    		}));
    	});

    Le code html :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <div class="content">
    			<div id="message">
    				<form id="frmContact" action="" method="POST" novalidate="novalidate">
    					<div class="label">Votre nom (sans accent, ni caractères spéciaux) :&nbsp;<font class="warning">*</font></div>
    					<div class="field"><input type="text" id="name" name="name" placeholder="Entrez votre nom" title="Entrez votre nom" class="required" aria-required="true" required></div>
    					<div class="label">Votre Email :&nbsp;<font class="warning">*</font></div>
    					<div class="field"><input type="text" id="email" name="email" placeholder="Entrez votre e-mail" title="Entrez votre e-mail" class="required email" aria-required="true" required></div>
    					<div class="label">Sujet :&nbsp;<font class="warning">*</font></div>
    					<div class="field"><input type="text" id="phone" name="phone" placeholder="Sujet" title="Sujet" class="required phone" aria-required="true" required></div>
    					<div class="label">Votre message :&nbsp;<font class="warning">*</font></div>
    					<div class="field"><textarea id="comment-content" name="content" style="height: 80px;"></textarea></div>
    					<div class="g-recaptcha" data-sitekey="<?php echo SITE_KEY; ?>" align="center"></div>			
    					<div id="mail-status" align="center" margin-bottom="10px"></div>
    					<div  align="center"><button type="Submit" id="send-message" class="bouton">Envoyer</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button type="reset" class="bouton">Annuler</button></div>
    				</form>
    			</div>
    			<div id="loader-icon" style="display:none;"><img src="img/loader.gif" /></div>
    		</div>

    Et le code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?php
    if($_POST)
    {
    require('constant.php');
     
        $user_name      = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
        $user_email     = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
        $user_phone     = filter_var($_POST["phone"], FILTER_SANITIZE_STRING);
        $content   = filter_var($_POST["content"], FILTER_SANITIZE_STRING);
     
        if(empty($user_name)) {
    		$empty[] = "<b>Nom</b>";		
    	}
    	if(empty($user_email)) {
    		$empty[] = "<b>Email</b>";
    	}
    	if(empty($user_phone)) {
    		$empty[] = "<b>Sujet</b>";
    	}	
    	if(empty($content)) {
    		$empty[] = "<b>Message</b>";
    	}
     
    	if(!empty($empty)) {
    		$output = json_encode(array('type'=>'error', 'text' => implode(", ",$empty) . ' <b>manquant(s)</b>'));
            die($output);
    	}
     
    	if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
    	    $output = json_encode(array('type'=>'error', 'text' => '<b>'.$user_email.'</b> est un e-mail non valide. Merci de le corriger.'));
    		die($output);
    	}
     
    	//reCAPTCHA validation
    	if (isset($_POST['g-recaptcha-response'])) {
     
    		require('component/recaptcha/src/autoload.php');		
     
    		$recaptcha = new \ReCaptcha\ReCaptcha(SECRET_KEY, new \ReCaptcha\RequestMethod\SocketPost());
     
    		$resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
     
    		  if (!$resp->isSuccess()) {
    				$output = json_encode(array('type'=>'error', 'text' => '<b>Alerte Captcha : Validation nécessaire !</b> '));
    				die($output);				
    		  }	
    	}
     
    	$toEmail = "contact@locationsaintcoulomb.fr";
    	$mailHeaders = "From : " . $user_name . "<" . $user_email . ">\r\n";
    	$mailBody = "Nom : " . $user_name . "\n";
    	$mailBody .= "Email : " . $user_email . "\n";
    	$mailBody .= "Sujet : " . $user_phone . "\n";
    	$mailBody .= "Message : " . $content . "\n";
     
    	if (mail($toEmail, "Message de www.locationsaintcoulomb.fr", $mailBody, $mailHeaders)) {
    	    $output = json_encode(array('type'=>'message', 'text' => 'Bonjour '.$user_name .', merci pour votre e-mail. Nous reviendrons vers vous dès que possible.'));
    	    die($output);
    	} else {
    	    $output = json_encode(array('type'=>'error', 'text' => 'Cet e-mail ne peut être envoyé. Merci de contacter'.SENDER_EMAIL));
    	    die($output);
    	}
    }
    ?>
    Je vous remercie par avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 680
    Par défaut
    pour la variable "mailHeaders", essayez sans espace pour "from:" et avec "\n" à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mailHeaders = "From: $user_name <$user_email>\n";
    essayez aussi de mettre l'adresse e-mail de l'envoyeur dans le 4e argument de "mail" comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	if (mail($toEmail, "Message de www.locationsaintcoulomb.fr", $mailBody, $mailHeaders, "-f$user_email")) {
    si vous avez toujours le même résultat, c'est peut-être l'hébergeur qui a bloqué l'envoi d'e-mail ou qui impose des conditions spéciales.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Par défaut
    Bonjour Mathieu,

    C'est effectivement la variable mailHeaders qui causait le problème...
    Merci pour cette réponse claire et efficace !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de mail au format html
    Par Mephyston dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/01/2004, 12h29
  2. Envoi de mail au format Rich-Text
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 29/10/2003, 16h27
  3. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22
  4. Outlook ne se ferme pas après un envoi de mail
    Par Joke dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/06/2003, 17h32
  5. envoi de mail, protocol SMTP langage C
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo