Page 1 sur 1

formulaire d'envoi par mail s'execute mais n'arrive pas

Posté : 06 sept. 2011, 22:48
par kibba
Bonjour, j'ai un soucis avec ce script de reservation, qui fonctionnait le mois dernier et depuis la resolution de ce probleme php-debutant/formulaire-envoi-par-mail- ... 58427.html
aujourd'hui, j'officialise le site, j'ai juste changé les adresse mail de destination et depuis j'ai un message comme quoi le mail est bien envoyé mais aucun mail n'arrive sur les boites mail, j'ai essayé de rechanger les adresse sans succes. Mon site est hébergé sur toile-libre.org Merci de m'aider, ç'est en train de me rendre fou...
<?php
// Si le formulaire est envoyé alors on fait le traitement
if (isset($_POST['envoyer']))
{
	
	if (!empty($alert))
	{
		echo '<p style="color:red">'.$alert.'</p>';
	}
	//
	// Récupération des informations
	//
	// On donne un autre nom au variable pour éviter les problèmes avec Register Global à ON
	//et on traite avec htmlentities pour la sécurité ainsi que
	// stripslashes pour supprimer les "\" avant les "'" et trim pour eviter les champs vides
	$formNom = htmlentities(stripslashes(trim($_POST['nom'])));
	$formMail = htmlentities(stripslashes(trim($_POST['mail'])));
	$formDebut = htmlentities(stripslashes(trim($_POST['debut'])));
	$formFin = htmlentities(stripslashes(trim($_POST['fin'])));
	$formCommentaires = htmlentities(stripslashes(trim($_POST['commentaires'])));
			
	// 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://amicalespcontes.toile-libre.org/Reservation/index.php')
	{
		header('Location: http://amicalespcontes.toile-libre.org/');
	}
			
	//On vérifie que les champs recquis soient bien remplis 
	elseif(empty($formNom) || empty($formDebut) || empty($formFin))
	{
		$alert = 'Tous les champs recquis doivent être renseignés';
	}
			
	// On vérifie que le format de l'e-mail est correct
	//AVEC LA FONCTION FILTER_VALIDATE_EMAIL
	elseif(!filter_var($formMail, FILTER_VALIDATE_EMAIL) && !empty($formMail))
	{
		$alert = 'L\'adresse '.$formMail.' n\'est pas valide';
	}
	
	// On verifie qu'il n'y a aucun header dans les champs
	elseif (preg_match($regex_head, $formNom)
			|| preg_match($regex_head, $formMail)
			|| preg_match($regex_head, $formDebut)
			|| preg_match($regex_head, $formFin)
			|| preg_match($regex_head, $formCommentaires))
	{
		$alert = 'En-têtes interdites dans les champs du formulaires';
	}
			
	// Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail
	elseif (!isset ($_COOKIE['sent']))
	{
		//Destinataire
		$to = '[email protected]';
		
		//Sujet
		$sujet = 'Demande de réservation';
				
		//Construction du message
		$msg = 'Bonjour,'."\r\n\r\n";
		$msg .= 'Une demande de réservation de l\'appartement de St Etiennes a été effectuée depuis le site de l\'amicale'."\r\n\r\n";
		$msg .= 'par '.$formNom.'  '.$formMail."\r\n";
		$msg .= 'pour la période du '.$formDebut.' au '.$formFin."\r\n\r\n";
		$msg .= '********commentaires********'."\r\n";
		$msg .=  $formCommentaires."\r\n";
		$msg .= '****************************'."\r\n";
		$msg .= '<html>Vous pouvez mettre à jour le calendrier en vous connectant à '."\r\n";
		$msg .= '<a href="https://www.google.com/calendar/render?tab=mc&pli=1&gsessionid=VE-UCWB4wlOO5KexlybvFA"> googleAgenda</a></html>'."\r\n\r\n";
						
		//En-têtes de l'e-mail
		$headers = 'From: "le site de l\'amicale"<[email protected]>'."\r\n";
		$headers .='Cc: [email protected]'."\r\n";
		$headers .='Bcc: [email protected]'."\r\n";
		$headers .='Content-Type: text/html; charset="utf-8"'."\r\n\r\n"; 
				
		//Envoi de l'e-mail
		if (mail($to, $sujet, $msg, $headers))
		{
			$alert = 'E-mail envoyé avec succès';					

			// On créé un cookie de courte durée (ici 120 secondes) pour éviter de 
			// renvoyer un mail en rafraichissant la page 
			setcookie("sent", "1", time() +120);
			
			//On detruit la variable $_POST
			unset($_POST);
		}
		else 
		{
			$alert = 'Erreur de l\'envoi de l\'e-mail';
		}
	}
				
	//Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST
	else 
	{
		unset($_POST);
	}
	
}
			
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"  lang="fr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Reservation</title>
		<link rel="stylesheet" href="http://amicalespcontes.toile-libre.org/Jquery/jquery-ui-1.8.12.custom/development-bundle/themes/base/jquery.ui.all.css">
	  	 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
	  	 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js"></script>
	  	 <script src="http://amicalespcontes.toile-libre.org/Jquery/jquery-ui-1.8.12.custom/development-bundle/ui/i18n//jquery.ui.datepicker-fr.js"></script>
	  	 <link rel="stylesheet" href="http://amicalespcontes.toile-libre.org/Jquery/jquery-ui-1.8.12.custom/development-bundle/demos.css"></link>
	  
	  </head>
	  
	  <script>
			$(function() {
				$( "#datepicker" ).datepicker();
			});
		</script>
		<script>
			$(function() {
				$( "#datepicker2" ).datepicker();
			});
		</script>
	
	<?php
    	if (!empty($alert))
    	{
    		echo '<p style="color:red">'.$alert.'</p>';
    	}
    ?>
	
	<body>
		<div>
		<iframe align="left" src="https://www.google.com/calendar/embed?pvttk=b492614926612ba0c5e6c7c1a702e9f1&title=R%C3%A9servation%20de%20l'appartement%20de%20St%20Etienne%20de%20Tin%C3%A9e&showTabs=0&showCalendars=0&showTz=0&height=600&wkst=2&bgcolor=%23999999&src=amicalespcontes%40gmail.com&color=%23182C57&ctz=Europe%2FParis" style=" border:solid 1px #777 " width="800" height="600" frameborder="0" scrolling="no"></iframe>
		</div>
		
		 <div align="center"> 
    	<form action="index.php" method="POST">
    		<h1>&nbsp;&nbsp;&nbsp;<span style="text-decoration: underline; font-style: italic;">Formulaire de réservation</span></h1>
    		<br /><br />
    		
    			<legend><strong>Informations personnelles</strong></legend>
    			<label>
    				Nom, Prénom <font size="2" color="#FF0000">(recquis)</font>:
    				<input type="text" name="nom" />
    			</label><br /><br />
    			<label>
    				Adresse mail <font size="2" color="#0000FF">(optionnel)</font>:
    				<input type="text" name="mail" />
    			</label>
    		<br /><br />
    		
    		
    			<legend><strong>Dates souhaitées </strong><font size="2" color="#FF0000">(recquis)</font></legend>
    			<label>
    				Du :
    			 	<input id="datepicker" type="text" name="debut" />
    			 </label><br /><br />
    			<label>
    			 	au :
    			 	<input id="datepicker2" type="text" name="fin" />
    			 </label>
    		<br /><br />
    		
    		
    			<legend><strong>Commentaires </strong><font size="2" color="#0000FF">(optionnel)</font></legend>
    			<textarea name="commentaires" cols="20" rows="7"></textarea>
    		<br /><br />
    		
    		&nbsp;&nbsp;<input type="submit" value="Envoyer" name="envoyer" /> &nbsp; &nbsp; &nbsp; &nbsp;
    		&nbsp;&nbsp;<input type="reset" value="Rétablir"/>
    	</form>
    	</div>
    
    </body>
      
</html>

Re: formulaire d'envoi par mail s'execute mais n'arrive pas

Posté : 07 sept. 2011, 00:08
par moogli
salut,

a tu regardé dans les dossiers spam des adresses réceptrice ?

ton message ne contient pas de html valide :)


@+

Re: formulaire d'envoi par mail s'execute mais n'arrive pas

Posté : 07 sept. 2011, 09:57
par kibba
Oui, effectivement le message arrivait dans mes spams mais comment faire pour que le code html soit valide??
de plus j'ai un probleme avec la mise en page du message, les retour à la ligne ne sont pas pris en compte, ce qui gene à la lecture du mail et de plus les caracteres accentué ne sont pas restitué..

voilà comment je reçois le mail :
Bonjour, Une demande de réservation de l'appartement de St Etiennes a été effectuée depuis le site de l'amicale par Nom Prenom [email protected] pour la période du 15/09/2011 au 18/09/2011 ********commentaires******** l'aposrophe & lé accents **************************** Vous pouvez mettre à jour le calendrier en vous connectant à googleAgenda
merci de votre aide

Re: formulaire d'envoi par mail s'execute mais n'arrive pas

Posté : 07 sept. 2011, 10:58
par moogli
pour le html valide, ben faut mettre le texte dans les balise html
$msg = 'Bonjour,'."\r\n\r\n";
                $msg .= 'Une demande de réservation de l\'appartement de St Etiennes a été effectuée depuis le site de l\'amicale'."\r\n\r\n";
                $msg .= 'par '.$formNom.'  '.$formMail."\r\n";
                $msg .= 'pour la période du '.$formDebut.' au '.$formFin."\r\n\r\n";
                $msg .= '********commentaires********'."\r\n";
                $msg .=  $formCommentaires."\r\n";
                $msg .= '****************************'."\r\n";
                $msg .= '<html>Vous pouvez mettre à jour le calendrier en vous connectant à '."\r\n";
                $msg .= '<a href="https://www.google.com/calendar/render?tab=mc&pli=1&gsessionid=VE-UCWB4wlOO5KexlybvFA"> googleAgenda</a></html>'."\r\n\r\n";
et le tu met le texte avant ...
du html valide c'est plutot
<html>
<head>
<title>titre de la page html</title>
</head>
<body>
blabla qui est le corp du message
</body>
</html>
pour les accents tu a un problème d'encodage le plus (et vu que le le texte est fixe c'est de mettre dans le texte les entités html correspondantes (&eacute; à la place de é etc etc) => http://fr.selfhtml.org/html/generalites ... tm#accents

@+

Re: formulaire d'envoi par mail s'execute mais n'arrive pas

Posté : 07 sept. 2011, 19:53
par kibba
Merci, je vais tester ça
Par contre pour mon problème d'encodage, ce n'est pas possible de régler le problème comme ceci, puisque je n'ai pas de problème avec le texte fixe mais avec le texte entré dans le champ "commentaire"

En tout cas merci beaucoup de ton aide

Du coup, j'ai pu régler mon soucis de retour à la ligne mais pas celui des accents

Re: formulaire d'envoi par mail s'execute mais n'arrive pas

Posté : 07 sept. 2011, 21:07
par moogli