8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,

voilà j'ai un souci. J'ai un script php pour recevoir par mail les résultats de mon formulaire. Tout était ok depuis que mon site était en ligne il y a environ 6 mois.

Mon hébergeur LWS (hébergement discount) a changé son serveur mail le mois dernier et maintenant je ne reçois plus les résultats de mon formulaire par mail.

Je les ai contacté, ils m'ont indiqué qu'il fallait mettre un adresse mail avec mon domaine (adresse que j'ai créé et qui fonctionne) et ils m'ont précisé ensuite qui fallait remplir les entêtes correctement pour éviter d'être considéré comme spam($e-mail, $titre, $message, $entete...). J'ai tenté de chercher sur Internet de la doc et de mofidier mon script mais sans succès.

Voici mon scrpit tel qu'il fonctionnait avant le changement de serveur de mon hébergeur :

<?php
$destinataire="studio@ateliernumerik.com";
$objet="Message en provenance du site de l'atelier numérique";
$message="Demande de renseignements \n \n
Société: ".$_POST['societe']." \n
Nom: ".$_POST['nom']."\n
Prénom  ".$_POST['prenom']."\n
Adresse: ".$_POST['adresse']."\n
Code postal: ".$_POST['codepostal']."\n
Ville: ".$_POST['ville']."\n
Téléphone: ".$_POST['tel']."\n
Email: ".$_POST['email']."\n\n
Prestations: ".$_POST['prestations']."\n
Votre message: ".$_POST['message'];
if(mail($destinataire,$objet,$message,$from))
{
echo "";
}
else
{
echo "Une erreure s'est produite";
}
?>


Quelqu'un a t-il déjà rencontré ce problème ou voit-il comme corriger le problème.

Par avance merci de votre aide.
Salut
Je crois qu'il faut que te mette afin de spécifier la nature de ton mail.
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
     $headers  = 'MIME-Version: 1.0' . "\r\n";
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


Le code pour envoyer le mail et ou mettre l'header

mail($to, $subject, $message, $headers);



Donc faut que tu rajoutes dans tes headers les deux premiers ligne de code du debut ou toi tu integre ton $from

sinon pour t'aider plus http://fr.php.net/manual/fr/function.mail.php
Merci pour ta réponse.

Mon hébergeur m'a envoyé ceci que j'ai intégré dans mon code

<?php
$to = 'xxxx@hotmail.fr';
$from = 'studio@ateliernumerik.com';
$entete  = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <studio@ateliernumerik.com>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP";
$entete .= "X-Priority: 1\n";
$entete .= "Return-Path: <studio@ateliernumerik.com>\n";
$msg   = ''
$msg  .= 'mail de test
'
$msg  .= ''
$sujet = 'Demande de renseignements'
Société: ".$_POST['societe']." \n
Nom: ".$_POST['nom']."\n
Prénom  ".$_POST['prenom']."\n
Adresse: ".$_POST['adresse']."\n
Code postal: ".$_POST['codepostal']."\n
Ville: ".$_POST['ville']."\n
Téléphone: ".$_POST['tel']."\n
Email: ".$_POST['email']."\n\n
Prestations: ".$_POST['prestations']."\n
Votre message: ".$_POST['message'];
if(mail($to,$sujet,$msg,$entete))
     { 
          echo  'Le message a été envoyé' ; 
     } 
     else 
     { 
          echo  'Le message n\' a pu être envoyé' ; 
     } 


?>


Mais le code ne marche pas, c'est-à-dire dans Notepad, le code après les entêtes est grisé (voir pièce jointe) upload/10454-entete.jpg
Regarde par toi meme, le $msg, ne contient pas tout tes information apres ton $sujet, donc tu as une erreur avec tes quotes et double quote.

Garde ton code normale et change seulement cela de ton code de base pour le test
$from = 'studio@ateliernumerik.com';
$entete  = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <studio@ateliernumerik.com>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP";
$entete .= "X-Priority: 1\n";
$entete .= "Return-Path: <studio@ateliernumerik.com>\n";

et quand tu envois ton mail.

mail($destinataire,$objet,$message,$entete)


Je pense que ca doit etre comme cela car tu avais just l'entete a changer.
Ok, j'ai corrigé les erreurs.

Par contre, lorsque je mets en ligne, le serveur m'indique quand je valide le formulaire que j'ai une erreur à la ligne 50 (ligne indiquée). Vois-tu où est l'erreur ?

<?php
$to = 'xxxx@hotmail.fr';
$from = 'studio@ateliernumerik.com';
$entete  = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <studio@ateliernumerik.com>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP";
$entete .= "X-Priority: 1\n";
$entete .= "Return-Path: <studio@ateliernumerik.com>\n";
$msg   = 'formulaire ateliernumerik';
$sujet = 'Demande de renseignements';
Société: ".$_POST['societe']\n"; <!--ligne50-->
Nom: ".$_POST['nom']\n";
Prénom  ".$_POST['prenom']\n";
Adresse: ".$_POST['adresse']\n";
Code postal: ".$_POST['codepostal']\n";
Ville: ".$_POST['ville']\n";
Téléphone: ".$_POST['tel']\n";
Email: ".$_POST['email']\n";
Prestations: ".$_POST['prestations']\n";
Votre message: ".$_POST['message']\n";
if(mail($to,$sujet,$msg,$entete))
     { 
          echo  'Le message a été envoyé' ; 
     } 
     else 
     { 
          echo  'Le message n\' a pu être envoyé' ; 
     } 


?>
non c'est pas encore ça Smiley lol

car en faite tu integres pas tes données Société, nom .... car en faite tu as oublier de réouvrire ta variable $msg.

<?php
$to = 'xxxx@hotmail.fr';
$from = 'studio@ateliernumerik.com';
$entete  = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <studio@ateliernumerik.com>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP";
$entete .= "X-Priority: 1\n";
$entete .= "Return-Path: <studio@ateliernumerik.com>\n";
$msg   = 'formulaire ateliernumerik';
$sujet = 'Demande de renseignements';
$msg .= "Société: ".$_POST['societe']\n";
$msg .= "Nom: ".$_POST['nom']\n";
$msg .= "Prénom  ".$_POST['prenom']\n";
$msg .= "Adresse: ".$_POST['adresse']\n";
$msg .= "Code postal: ".$_POST['codepostal']\n";
$msg .= "Ville: ".$_POST['ville']\n";
$msg .= "Téléphone: ".$_POST['tel']\n";
$msg .= "Email: ".$_POST['email']\n";
$msg .= "Prestations: ".$_POST['prestations']\n";
$msg .= "Votre message: ".$_POST['message']\n";
if(mail($to,$sujet,$msg,$entete))
     { 
          echo  'Le message a été envoyé' ; 
     } 
     else 
     { 
          echo  'Le message n\' a pu être envoyé' ; 
     } 


?>


Voilà comme cela ca devrai etre bon.
Modifié par Halindel (10 Jul 2007 - 15:31)
Avec le code que tu m'as donné, il y a des erreurs php.

J'ai corrigé, le message part, il me confirme que le message est bien parti mais je ne reçois toujours rien par mail.

<?php
$to = 'xxxx@hotmail.fr';
$from = 'studio@ateliernumerik.com';
$entete  = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <studio@ateliernumerik.com>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP";
$entete .= "X-Priority: 1\n";
$entete .= "Return-Path: <studio@ateliernumerik.com>\n";
$msg   = 'formulaire ateliernumerik';
$sujet = 'Demande de renseignements';
$msg .= $societe = $_POST['societe'];
$msg .= $nom = $_POST['nom'];
$msg .= $prenom = $_POST['prenom'];
$msg .= $adresse = $_POST['adresse'];
$msg .= $codepostal = $_POST['codepostal'];
$msg .= $ville = $_POST['ville'];
$msg .= $telephone = $_POST['tel'];
$msg .= $email = $_POST['email'];
$msg .= $prestations = $_POST['prestations'];
$msg .= $message = $_POST['message'];
if(mail($to,$sujet,$msg,$entete))
     { 
          echo  'Le message a été envoyé' ; 
     } 
     else 
     { 
          echo  'Le message n\' a pu être envoyé' ; 
     } 


?>



Smiley decu
Déjà suivant ton code de depart le code final sans erreur ressemblerai a cela normalement

<?php
$to = 'xxxx@hotmail.fr';
$from = 'studio@ateliernumerik.com';
$entete  = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <studio@ateliernumerik.com>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP";
$entete .= "X-Priority: 1\n";
$entete .= "Return-Path: <studio@ateliernumerik.com>\n";
$sujet = 'Demande de renseignements';
$msg   = 'formulaire ateliernumerik\n';
$msg .= "Société: ".$_POST['societe']."\n";
$msg .= "Nom: ".$_POST['nom']."\n";
$msg .= "Prénom  ".$_POST['prenom']."\n";
$msg .= "Adresse: ".$_POST['adresse']."\n";
$msg .= "Code postal: ".$_POST['codepostal']."\n";
$msg .= "Ville: ".$_POST['ville']."\n";
$msg .= "Téléphone: ".$_POST['tel']."\n";
$msg .= "Email: ".$_POST['email']."\n";
$msg .= "Prestations: ".$_POST['prestations']."\n";
$msg .= "Votre message: ".$_POST['message']."\n";
if(mail($to,$sujet,$msg,$entete))
     { 
          echo  'Le message a été envoyé' ; 
     } 
     else 
     { 
          echo  'Le message n\' a pu être envoyé' ; 
     } 


?>


j'esserai se soir chez moi Smiley lol
voila le resultat du mail a partire de chez free
formulaire ateliernumerikSociété: bouh
Nom: bouh
Prénom bouh
Adresse: bouh
Code postal: bouh
Ville: bouh
Téléphone: bouh
Email: bouh
Prestations: bouh
Votre message: bouh 


et le code qui va avec
<?php

$to = 'fred_hamel@yahoo.fr';

$from = 'studio@ateliernumerik.com';

$entete  = "MIME-Version: 1.0\r\n";

$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";

$entete .= "From: $from <studio@ateliernumerik.com>\r\n";

$entete .= "Reply-to: $from\r\n";

$entete .= "X-Mailer: PHP";

$entete .= "X-Priority: 1\n";

$entete .= "Return-Path: <studio@ateliernumerik.com>\n";

$sujet = 'Demande de renseignements';

$msg   = 'formulaire ateliernumerik</p>';

$msg .= "Société: bouh <br/>";

$msg .= "Nom: bouh <br/>";

$msg .= "Prénom  bouh <br/>";

$msg .= "Adresse: bouh <br/>";

$msg .= "Code postal: bouh <br/>";

$msg .= "Ville: bouh <br/>";

$msg .= "Téléphone: bouh <br/>";

$msg .= "Email: bouh <br/>";

$msg .= "Prestations: bouh <br/>";

$msg .= "Votre message: bouh <br/>";

if(mail($to,$sujet,$msg,$entete))

     { 

          echo  'Le message a été envoyé' ; 

     } 

     else 

     { 

          echo  'Le message n\' a pu être envoyé' ; 

     } 
?>


Donc ca marche tres bien Smiley lol apres remplace les bouh par les variables de ton formulaire comme le code du poste d'avant et ca devrai etre bon.
J'avais déjà essayé sur Free et çà marchait auparavant.

L'ensemble du code est celui. Un fichier .htm lié à un fichier .php par la méthode post.

Le fichier .htm contient un javasript qui permet de spécifier des champs obligatoires.

Voici le code html


<!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" >
   <head>
       <title>Contact</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="contact" href="contact.css" />

	   <script type="text/javascript" language="Javascript" >
<!--
function verification()
{
 if(document.formulaire.societe.value == "")  {
   alert("Veuillez entrer le nom de votre société svp");
   document.formulaire.societe.focus();
   return false;
  }
  else
 if(document.formulaire.nom.value == "") {
   alert("Veuillez entrer votre nom svp");
   document.formulaire.nom.focus();
   return false;
  }
  else
 if(document.formulaire.prenom.value == "") {
   alert("Veuillez entrer votre prénom svp");
   document.formulaire.prenom.focus();
   return false;
  }
   else
 if(document.formulaire.tel.value == "") {
   alert("Veuillez entrer votre numéro de téléphone svp");
   document.formulaire.tel.focus();
   return false;
  }
   else
 if(document.formulaire.email.value == "") {
   alert("Veuillez entrer votre adresse electronique svp");
   document.formulaire.email.focus();
   return false;
  }
  else
 if(document.formulaire.email.value.indexOf('@') == -1) {
   alert("Ce n'est pas une adresse electronique, verifiez la svp");
   document.formulaire.email.focus();
   return false;
  }
  else
 if(document.formulaire.message.value == "") {
   alert("Veuillez entrer le texte de votre message svp");
   document.formulaire.message.focus();
   return false;
  }
return true
}
//-->
</script>

   </head>
   
   <body>
   
<div class="conteneur">   

   <div class="header">
</div>

<div id="menu">
 <ul class="menu"><li><a href="index.html">Accueil</a></li>
	<li><a href="video.htm">Vidéo</a></li>
	<li><a href="print.htm">Print</a></li>
	<li><a href="web.htm">Site Web</a></li>
	<li><a>Contact</a></li></ul>
</div>


<div id="corps">
	<p> Pour une demande d'informations, cliquez <a href="mailto:contact@ateliernumerik.com?subject=Demande de renseignements">ici</a> ou remplissez le formulaire suivant :</p>
	<form name="formulaire" action="email.php" method="post" onSubmit="return verification()">
	<table>
	<tr>
  <td class="tdright">Société<sup>*</sup>:</td>
  <td class="tdleft"><input name="societe" type="text" id="societe" tabindex="1" size="25"></td>
</tr>
<tr>
  <td class="tdright">Nom<sup>*</sup>:</td>
  <td class="tdleft"><input name="nom" type="text" id="nom" tabindex="2" size="25"></td>
</tr>
<tr>
  <td class="tdright">Prénom<sup>*</sup>:</td>
  <td class="tdleft"><input name="prenom" type="text" id="prenom" tabindex="3" size="25"></td>
</tr>
<tr>
  <td class="tdright">Adresse :</td>
  <td class="tdleft"><input name="adresse" type="text" id="adresse" tabindex="4" size="25"></td>
</tr>
<tr>
  <td class="tdright">Code postal :</td>
  <td class="tdleft"><input name="codepostal" type="text" id="code_postal" tabindex="5" size="25"></td>
</tr>
<tr>
  <td class="tdright">Ville :</td>
  <td class="tdleft"><input name="ville" type="text" id="ville" tabindex="6" size="25"></td>
</tr>
<tr>
  <td class="tdright">Téléphone<sup>*</sup>:</td>
  <td class="tdleft"><input name="tel" type="text" id="tel" tabindex="7" size="25"></td>
</tr>
<tr>
  <td class="tdright">E-mail<sup>*</sup>:</td>
  <td class="tdleft"><input name="email" type="text" id="email" tabindex="8" size="25"></td>
</tr>
<tr>
  <td class="tdright">Prestations désirées<sup>*</sup>:</td>
  <td class="tdleft"><select name="prestations" size="1" tabindex="8">
	<option value="audiovisuel">Audiovisuel</option>
               <option value="print">Print</option>
               <option value="site internet">Site Internet</option>								
	  </select></td>
</tr>
	<tr>
  <td class="tdright">Votre message :<sup>*</sup></td>
  <td class="tdleft"><textarea name="message" cols="35" rows="8" id="message" tabindex="10"></textarea></td>
</tr>   
	<tr>
  <td class="tdright"></td>
  <td class="tdleft"><input type="submit" value="Envoyer" /> <input type="reset" value="Effacer" /></td>
</tr>   
</table>
</form>
<p><em>* Champs obligatoires</em></p>
</div>
  
<div id="pied_de_page">
	<p> l'atelier numérique</p>
	</div>
 </div> 
   </body>
</html>


et le php

<!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" >
   <head>
       <title>Page de confirmation</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="confirm" href="confirm.css" />


   </head>
   
   <body>
   
<div id="conteneur">   

   <div id="en_tete">
</div>

<div id="menu">
	  
	  	<ul class="menu">
		<li><a href="index.html">Accueil</a></li>
		<li><a href="video.htm">Vidéo</a></li>
		<li><a href="print.htm">Print</a></li>
		<li><a href="siteweb.htm">Site Web</a></li>
		
		<li><a href="contact.htm">Contact</a></li>
		</ul>
		
	  </div>

<div id="corps">
	<p> Votre message a bien été envoyé. Notre service commercial vous répondra dans les plus brefs délais.
	<br/>
	<br/>
	A très bientôt.
	</p>
	</div>
<?php
$to = 'xxxx@hotmail.fr';
$from = 'studio@ateliernumerik.com';
$entete  = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <studio@ateliernumerik.com>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP";
$entete .= "X-Priority: 1\n";
$entete .= "Return-Path: <studio@ateliernumerik.com>\n";
$msg   = 'Formulaire ateliernumerik';
$sujet = 'Demande de renseignements';
$msg .= "Societe : " . $_POST['societe']."\n";
$msg .= "Nom : " . $_POST['nom']."\n";
$msg .= "Prenom : " . $_POST['prenom']."\n";
$msg .= "Adresse : " . $_POST['adresse']."\n";
$msg .= "Code postal : " . $_POST['codepostal']."\n";
$msg .= "Ville : " . $_POST['ville']."\n";
$msg .= "Telephone : " . $_POST['tel']."\n";
$msg .= "Email : " . $_POST['email']."\n";
$msg .= "Prestations : " . $_POST['prestations']."\n";
$msg .= "Message : " . $_POST['message']."\n";
if(mail($to,$sujet,$msg,$entete))
     { 
          echo  'Le message a été envoyé' ; 
     } 
     else 
     { 
          echo  'Le message n\' a pu être envoyé' ; 
     } 


?>




<div id="pied_de_page">
	<p> Copyright 2003 - 2007 l'atelier numérique</p>
	</div>
  
   </body>
</html>


J'ai testé le formulaire. Je remplis les champs, je clique sur envoyer. J'ai bien le message, votre message a bien été envoyé mais je ne reçois rien par mail. Et le mail fonctionne, j'ai vérifié.

C'est à ne rien y comprendre. Smiley eek
Truc con Smiley lol tu remplaces bien

$to = 'xxxx@hotmail.fr'; <== par l'email qui doit recevoir l'email. donc je pense que pour toi ca serai à ton service commercial Smiley langue car sinon il envoit tout tes email vers ton xxxx@hotmail.fr.

Juste pour etre sur.
Nickel, j'ai remplacé le xxxx@hotmail.fr par mon mail perso et çà marche.

Merci beaucoup d'avoir pris le temps de répondre à mon souci.

J'ai une dernière question : je reçois les résultats de mon formulaire sans mise en page dans ma boîte mail; c'est à dire que le tout forme une seule et même phrase.

Y a t-il un moyen de mettre en forme cela et si oui comment?
remplace tes \n par des <br/> comme du html Smiley cligne après tu as plus qu'a faire une mini page.

Si ca suffit pense à mettre resolu dans le titre Smiley langue