Bonjour,

j'ai créé un formulaire de contact en php, il fonctionne si le destinataire est notre adresse email Orange, mais ne fonctionne pas avec l'email de notre client, ni gmail, ni hotmail ...

Voici un extrait du code :

/////voici la version Mine 
			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";	
			$headers .= "X-Mailer: PHP ".phpversion()."\n";
			$headers .= "X-Priority: 1 \n";
			$headers .= "Mime-Version: 1.0\n";
			$headers .= "Content-Transfer-Encoding: 8bit\n";
			$headers .= "Content-type: text/html; charset= utf-8\n";
			$headers .= "Date:" . date("D, d M Y h:s:i") . " +0200\n";	
			
			$subject="$objet";
			$destinataire="exemple@exemple.com";
			$body="Email envoye a partir du site Internet wwww.exemple.com Telephone : $tel Message : $mesg";
			$body=stripslashes($body);
			
			if (mail($destinataire,$subject,$body,$headers)) { 
			echo "<p class=\"red\">Votre mail a été envoyé</p>"; 
			} else { 
			echo "<p class=\"red\">Une erreur s'est produite</p>"; 
			} 				



J'ai beau chercher l'erreur j'avoue que ne trouve pas,
Merci d'avance pour votre aide !
Bonjour,

Deux solutions:
Soit les mails partent dans les spams, mais j'imagine que vous avez deja checker cela.
Soit votre serveur smtp est bloqué par gmail et compagnie.
Salut,
il y a quoi dans les variables de cette ligne :
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";	

Si ce n'est pas une adresse fixe à toi et configurer pour ton serveur, a priori il est très probable que tu fasse une sorte d'usurpation d'adresse mail et que du coup cela parte dans les spams.
(Un peu le même problème qu'ici je pense : https://forum.alsacreations.com/topic-1-81171-1.html )
Modifié par mathieu1004 (31 May 2017 - 11:48)
Bonjour,

merci JENCAL pour votre réponse, j'ai bien vérifié les dossiers spam et ils sont vides.
Notre hébergeur nous assure que serveur smtp n'est pas bloqué ... en plus le formulaire est censé envoyer les emails au client donc sur le même nom de domaine que le site.

J'avoue que ne comprends pas d'ou vient l'erreur.
Bonjour,

merci mathieu1004,

en effet les variables de l'expéditeur $nom et $email sont renseignées par l'utilisateur dans le formulaire. Elles n'ont donc aucun rapport avec le serveur ...
Par contre ça n'arrive même pas dans les spams, aucun mail n'arrive à destination ...
Modérateur
Barney5757 a écrit :
en effet les variables de l'expéditeur $nom et $email sont renseignées par l'utilisateur dans le formulaire. Elles n'ont donc aucun rapport avec le serveur ...
Par contre ça n'arrive même pas dans les spams, aucun mail n'arrive à destination ...

Oui, sur beaucoup de serveurs, ce genre d'e-mail sont détruits automatiquement sans même arriver dans les spams.
J'ai testé un envoi sur mon adresse gmail avec comme expéditeur une adresse email du domaine, je n'ai rien reçu ...

$headers = "From: test <adresse@exemple.com>" . "\r\n";
vu que
Content-type: text/html
il faudrait peut-être utiliser
<br>
pour les sauts de ligne.
Modifié par limipl (31 May 2017 - 14:49)
Je ne sais pas, je ne sais plus, je suis perdu Smiley decu

J'ai beau faire des tests, la seule adresse qui reçoit bien l'email est notre adresse orange ...
Pourtant j'ai testé avec comme expéditeur une adresse email du domaine concerné.

Je craque Smiley biggol
Re/bonjour,

je vais mettre la totalité du code, au cas ou !

Formulaire

<form method="post" action="contact3.php">
    		
        <label for="nom">Votre nom : </label><input type="text" name="nom" id="nom" size="30" maxlength="30" /><br />
    		                           
    	<label for="email">Votre Email : </label><input type="text" name="email" id="email" size="30" maxlength="30" /><br />
          
        <label for="tel">Votre téléphone : </label><input type="text" name="fotel" id="fotel" size="30" maxlength="30" /><br />
    		
        <label for="objet">Votre objet : </label><SELECT name="objet" size="1">
                    		<option value="A préciser" selected="selected">A préciser</option>
                    		<option value="Regroupement de crédits">Regroupement de crédits</option>
                                <option value="Crédit immobilier">Crédit immobilier</option>
                                <option value="Rachat de crédit immobilier">Rachat de crédit immobilier</option>
        </SELECT><br />
            
    	<label for="mesg">Votre message : </label><textarea name="mesg" cols="30" rows="5" id="mesg"></textarea><br />
    		   		
    	<input type="submit" class="bouton" value="Envoyer" name="ok" />
                		
</form>


PHP :


if (isset($_POST['ok']))
            {
			// Traitement du formulaire
            
            		$nom = $_POST['nom'];
            		$email = $_POST['email'];
			$tel = $_POST['fotel'];
			$objet= $_POST['objet'];
            		$mesg = $_POST['mesg'];
			
			$nom = trim($nom);
			$email = trim($email);
			$tel = trim($tel);
			$objet = trim($objet);
			$mesg = trim($mesg);
			
			htmlentities ($nom);
			htmlentities ($email);
			htmlentities ($objet);
			htmlentities ($mesg);
			
            $msg_erreur = "<p class=\"red\">Erreur. Les champs suivants doivent être correctement remplis : </p>";
            $msg_ok = "<span class=\"black\">Votre message a été envoyé : </span>";
            $message = $msg_erreur;
            
            // vérification des champs
            if (empty($nom)) 
            $message .= "<p class=\"red\">Erreur votre nom doit être correctement renseigné.</p>";
            
            if (empty($email)) 
            $message .= "<p class=\"red\">Erreur votre email doit être correctement renseigné.</p>";
            
			if (empty($tel)) 
            $message .= "<p class=\"red\">Erreur votre numéro de téléphone doit être correctement renseigné.</p>";
			
            if (empty($mesg)) 
            $message .= "<p class=\"red\">Erreur votre message doit être correctement renseigné.</p>";
            
            // si un champ est vide, on affiche le message d'erreur
            if (strlen($message) > strlen($msg_erreur)) {
               //echo $message; die();
			   echo $message;
			 }
             else //Sinon on execute le script
			{
            echo $msg_ok;
                       
			$nom="client";
			$email="client@domaine.com";
			
			/////voici la version Mine 
			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";		
			$headers .= "X-Mailer: PHP ".phpversion()."\n";
			$headers .= "X-Priority: 1 \n";
			$headers .= "Mime-Version: 1.0\n";
			$headers .= "Content-Transfer-Encoding: 8bit\n";
			$headers .= "Content-type: text/html; charset= utf-8\n";
			$headers .= "Date:" . date("D, d M Y h:s:i") . " +0200\n";	
			
			$subject="$objet";
			$destinataire="test@gmail.com"; 
			$body="Email envoye a partir du site Internet wwww.domaine.com Telephone : $tel Message : $mesg";
			$body=stripslashes($body);
			 
			if (mail($destinataire,$subject,$body,$headers)) { 
			echo "<p class=\"red\">Votre mail a été envoyé</p>"; 
			} else { 
			echo "<p class=\"red\">Une erreur s'est produite</p>"; 
			} 				
			
			}//FIN DU ELSE
			
            }//FIN DU IF ISSET         


Modifié par Barney5757 (31 May 2017 - 16:21)
Modérateur
Qu'est-ce que disent les en-têtes de l'e-mail reçu?
Même avec l'adresse du domaine, il faut qu'elle soit configurée correctement, y'a-t-il des spf sur le nom de domaine (DNS)?

En dehors de ce point le seul moyen est d'obtenir les logs d'envois / erreurs du serveur d'envoi auprès de l'hébergeur.
Bonjour,

le seul truc étrange que j'ai dans le header sous Thunderbird, c'est expéditeur qui est vide ???
upload/1496413161-65954-header.jpg

Merci d'avance Smiley smile