8791 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,

Je viens de découvrir votre forum. Après y avoir cherché plusieurs solutions, je me décide à vous poster mon problème Smiley sweatdrop

Je suis en train de créer un formulaire et mon but est ensuite d'envoyer les informations du formulaire par e-mail.
Le seul hic : quand j'appuie sur Envoyer, que ce soit en local ou à partir d'un serveur distant, cela ne fonctionne pas, mon e-mail ne part pas. Smiley decu
J'ai testé un formulaire d'exemple que j'ai trouvé sur votre forum : http://a-pellegrini.developpez.com/tutoriels/php/mail/#L4.1 et là quand je clique sur le bouton Envoyer, en local comme directement sur la page, cela fonctionne.
Donc cela ne vient pas de mon hébergeur.

Qu'est-ce qui pourrait faire que mon bouton Envoyer ne fonctionne pas ?

Voici le code html (je ne mets que la partie concernant le formulaire) :
<form method="post" action="php/cible2.php">
			<p><label for="nomprenom">Nom et prénom</label> : <input type="text" name="nomprenom" id="nomprenom" tabindex="100" /><label for="societe">Société</label> : <input type="text" name="societe" id="societe" tabindex="100" /></p>
			<p><label for="email">E-mail</label> : <input type="text" name="email" id="email" tabindex="100" /><label for="tel">Téléphone</label> : <input type="text" name="tel" id="tel" tabindex="100" /></p>
			<p><label for="prestation">Sélectionnez votre/vos prestation(s)*</label> :<br />
			<select name="prestation1" id="prestation1">
                            <option value="L">L</option>
			    <option value="SI">SI</option>
			    <option value="PC">PC</option>
                            <option value="P1">P1</option> 
			    <option value="P2">P2</option>  
			</select><br />
			<select name="prestation2" id="prestation2">
                            <option value="L">L</option>
			    <option value="SI">SI</option>
			    <option value="PC">PC</option>
                            <option value="P1">P1</option> 
			    <option value="P2">P2</option> 
			</select><br />
			<select name="prestation3" id="prestation3">
                            <option value="L">L</option>
			    <option value="SI">SI</option>
			    <option value="PC">PC</option>
                            <option value="P1">P1</option> 
			    <option value="P2">P2</option> 
			</select></p>
			<p><label for="message">Message</label> :<br />
			<textarea name="message" id="message" rows="3" cols="30" tabindex="100"></textarea></p>
			<p><input type="submit" name="envoye" value="Envoyer" /></p>
		    </form>


Ainsi que le fichier cible en php :

<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoye']))
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $nomprenom    = stripslashes(trim($_POST['nomprenom']));
      $societe	    = stripslashes(trim($_POST['societe']));
      $email	    = stripslashes(trim($_POST['email']));
      $tel	    = stripslashes(trim($_POST['tel']));
      $prestation1  = stripslashes(trim($_POST['prestation1']));
      $prestation2  = stripslashes(trim($_POST['prestation2']));
      $prestation3  = stripslashes(trim($_POST['prestation3']));
      $message      = stripslashes(trim($_POST['message']));
    }
    else
    {
      $nomprenom    = trim($_POST['nomprenom']);
      $societe      = trim($_POST['societe']);
      $email        = trim($_POST['email']);
      $tel	    = trim($_POST['tel']);
      $prestation1  = trim($_POST['prestation1']);      
      $prestation2  = trim($_POST['prestation2']);     
      $prestation3  = trim($_POST['prestation3']);      
      $message	    = trim($_POST['message']);
    }
    
    /* Expression régulière permettant de vérifier si le 
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    
    /* Expression régulière permettant de vérifier qu'aucun 
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';
    
    /* Si le formulaire n'est pas posté de notre site on renvoie 
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://www.monsite.com/formulaire.html')
    {
      header('Location:  http://www.monsite.com');
 
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($nomprenom) 
           || empty($societe) 
           || empty($email) 
           || empty($tel))
    {
      $alert = 'Merci de bien vouloir renseigner les champs suivants : votre nom et prénom, le nom de votre société, votre e-mail et votre numéro de téléphone.';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $expediteur))
    {
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $email) 
            || preg_match($regex_head, $nomprenom) 
            || preg_match($regex_head, $tel))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (votre adresse e-mail) */
        $to = 'adresse@email.com';
	define('MAIL_SUJET','Demande');
      
	//Préparation de l'entête du mail:
	$mail_entete = "MIME-Version: 1.0\r\n";
	$mail_entete .= "From: {$_POST['nomprenom']} "
				 ."<{$_POST['email']}>\r\n";
	$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
	$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
	$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
	$mail_entete .= 'X-Mailer [langue]HP/' . phpversion()."\r\n";

	// préparation du corps du mail
	$mail_corps = "Message de : $nomprenom\n";
	$mail_corps = "Appartenant à la société : $societe\n";
	$mail_corps .= "Le contacter : $tel $email\n";
	$mail_corps .= "Ses besoins : $prestation1 $prestation2 $prestation3\n";
	$mail_corps .= "Informations complémentaires : $message\n\n\n";
        
        /* Envoi de l'e-mail */
        if (mail($to, $sujet, $msg, $headers))
        {
            $alert = 'E-mail envoyé avec succès';
            
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Formulaire</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
	<meta http-equiv="Content-Language" content="fr" />
    </head>
    <body>
	    <div id="texte-formulaire">
		<h1>Demande</h1>
		<p>Votre demande nous a bien été envoyée.</p>
	    </div>
    </body>
</html>


Merci pour votre aide ! Smiley biggrin