mail illisible en php

mail illisible en php - PHP - Programmation

Marsh Posté le 04-04-2011 à 12:14:39    

Bonjour a tous,
J'héberge sur un RPS (OVH) un site possédant un formulaire d'envois de mail en php.

 

Chaque fois qu'il est utilisé, l'email envoyé s'affiche en html (qu'il soit lu par un webmail, Thunderbird ou Outlook) et je n'arrive pas a trouver d'ou viens le problème.

 

Si cela peut aider, malgré le fait que j'ai spécifié un expéditeur dans le code, l'email illisible s'affiche avec anonymous@rpsxxxx.ovh.net

 


Code :
  1. <?php
  2. //print_r($_POST);
  3. $prenom = '';
  4. $nom= '';
  5. $adresse= '';
  6. $Field10= '';
  7. $ville= '';
  8. $cp= '';
  9. $pays= 'France';
  10. $telfixe= '';
  11. $telport= '';
  12. $telfax= '';
  13. $email= '';
  14. $radioDefault_223= '';
  15. $Field223_0= '';
  16. $Field223_1= '';
  17. $Field224_0= '';
  18. $Field224_1= '';
  19. $Field224_2= '';
  20. $Field225_1= '';
  21. $Field225_2= '';
  22. $Field226_1= '';
  23. $Field226_2= '';
  24. $Field227_1= '';
  25. $Field227_2= '';
  26. $Field228_1= '';
  27. $Field228_2= '';
  28. $Field229_1= '';
  29. $Field229_2= '';
  30. $Field230_1= '';
  31. $Field230_2= '';
  32. $Field231_1= '';
  33. $Field231_2= '';
  34. $Field232_1= '';
  35. $Field232_2= '';
  36. $Field233_1= '';
  37. $Field233_2= '';
  38. $radioDefault_328= '';
  39. $Field328_0= '';
  40. $Field328_1= '';
  41. $Field328_2= '';
  42. $Field328_other= '';
  43. $comment= '';
  44. $erreurs = '';
  45. //vérification formulaire
  46. if (isset($_POST['formulaire']) and $_POST['formulaire'] === 'ok' ) {
  47. //echo 'form ok <br />';
  48. //antispam
  49. if(isset($_POST['url']) && !empty($_POST['url']))
  50.     {
  51.         header('location:index.html');
  52.         exit();
  53.     }
  54. // données à réafficher si erreurs
  55. foreach ($_POST as $k => $v) {
  56.    ${$k} = $v;
  57. }
  58. // variables générales
  59. $go_index = "http://www.nomdedomaine.fr";
  60. $page_actuelle = "demande.php";
  61. $destinataire = "blabla@fai.fr";
  62. $objet = "Demande de documentation xxxxxx" ;
  63. $sqlhost = "localhost"; $sqluser = "xxxxxx"; $sqlmdp = "xxxxxx"; $sqlbase = "xxxxxx";
  64. // fin des paramètres
  65. mysql_connect ($sqlhost, $sqluser, $sqlmdp);
  66. mysql_select_db($sqlbase);
  67. // fin connexion base de donnée
  68. /*-----------------------
  69. ---CHAMPS OBLIGATOIRES---
  70. -----------------------*/
  71.     $erreurs = array();
  72.     //verif champ nom
  73.     if ((empty($_POST['nom'])) || (strlen($_POST['nom'])<2)) {
  74.     $erreurs['nom'] = 'Veuillez remplir votre nom';
  75.     }
  76.     //verif champ prenom
  77.     if ((empty($_POST['prenom'])) || (strlen($_POST['prenom'])<2)) {
  78.     $erreurs['prenom'] = 'Veuillez remplir votre prénom';
  79.     }
  80.     //verif champ rue
  81.     if ((empty($_POST['rue'])) || (strlen($_POST['rue'])<2)) {
  82.     $erreurs['rue'] = 'Veuillez remplir votre adresse';
  83.     }
  84.     //verif champ code postal
  85.     if ((empty($_POST['cp'])) || (strlen($_POST['cp'])<2)) {
  86.     $erreurs['cp'] = 'Veuillez remplir votre code postal';
  87.     }
  88.     //verif champ ville
  89.     if ((empty($_POST['ville'])) || (strlen($_POST['ville'])<2)) {
  90.     $erreurs['ville'] = 'Veuillez remplir votre ville';
  91.     }
  92.     //verif champ pays
  93.     if (empty($_POST['pays'])) {
  94.     $erreurs['pays'] = 'Veuillez remplir votre pays';
  95.     }
  96.     //verif champ téléphone
  97.     if ((empty($_POST['telfixe'])) && (empty($_POST['telport']))) {
  98.     $erreurs['telephone'] = 'Veuillez remplir le champ téléphone portable ou téléphone fixe';
  99.     }
  100.     //verif champ mail
  101.     if (!preg_match('`^[[:alnum:]]([-_..]?[[:alnum:]])*@[[:alnum:]]([-_..]?[[:alnum:]])*.([a-z]{2,4})$`',$email)) {
  102.     $erreurs['email'] = 'Veuillez corriger votre adresse email';
  103.     }
  104. //print_r($erreurs);
  105. //si les champs obligatoires sont remplis
  106. if (count($erreurs) === 0) {
  107. //echo 'pas d'erreurs<br />';
  108. //ENVOI DU MAIL
  109. $message = "<html>
  110. <head>
  111. <title>Demande de documentation xxxxxx</title>
  112. </head>
  113. <body>
  114. Nom :  $nom  <br />
  115. Prenom : $prenom  <br />
  116. Adresse e-mail : $email  <br />
  117. <br />
  118. Rue : $rue <br />
  119. Adresse : $adresse <br />
  120. CP : $cp <br />
  121. Ville : $ville <br />
  122. Pays : $pays <br />
  123. <br />
  124. telFixe : $telfixe <br />
  125. telPort : $telport <br />
  126. telFax : $telfax <br />
  127. <br />
  128. Documentation : $doc <br />
  129. Pour moi : $moi <br />
  130. Circuit : $circuit <br />
  131. Formule : $formule <br />
  132. <br />
  133. Contacter par : $contact_par <br />
  134. E-mail si besoin : $contact_email <br />
  135. <br />
  136. Commentaire : $commentaire <br />
  137. </body>
  138. </html>";
  139. $entete = "MIME-Version: 1.0rn";
  140. $entete .= "Content-type: text/html; charset=iso-8859-1rn";
  141. $entete .= "From: ".$email."rn";
  142. // échappement des données pour éviter les injections SQL
  143. foreach ($_POST as $k => $v) {
  144.    ${$k} = mysql_real_escape_string($v);
  145. }
  146. // enregistrement Base de Donnée
  147. $prenom= utf8_encode($prenom);
  148. $nom= utf8_encode($nom);
  149. $email= utf8_encode($email);
  150. $rue= utf8_encode($rue);
  151. $adresse= utf8_encode($adresse);
  152. $cp= utf8_encode($cp);
  153. $ville= utf8_encode($ville);
  154. $pays= utf8_encode($pays);
  155. $telfixe= utf8_encode($telfixe);
  156. $telport= utf8_encode($telport);
  157. $telfax= utf8_encode($telfax);
  158. $doc= utf8_encode($doc);
  159. $moi= utf8_encode($moi);
  160. $formule= utf8_encode($formule);
  161. $contact_par= utf8_encode($contact_par);
  162. $contact_email= utf8_encode($contact_email);
  163. $commentaire= utf8_encode($commentaire);
  164. $copie= utf8_encode($copie);
  165.   $req = 'INSERT INTO `documentation` VALUES("", "'.$prenom.'","'.$nom.'","'.$email.'","'.$rue.'","'.$adresse.'","'.$cp.'","'.$ville.'","'.$pays.'",
  166. "'.$telfixe.'","'.$telport.'","'.$telfax.'","'.$doc.'",
  167. "'.$moi.'","'.$formule.'","'.$contact_par.'","'.$contact_email.'", "'.$commentaire.'", "'.$copie.'", NOW() )';
  168.   $sql = mysql_query($req) or die ('Erreur Ex825'); // Code Erreur MYSQL
  169. if(mail($destinataire, $objet, $message, $entete))
  170. {
  171. // on vide les variables dynamiques
  172. foreach ($_POST as $k => $v) {
  173.    unset(${$k});
  174.    $envoi = "ok";
  175. }
  176. }
  177. }
  178. }
  179. ?>
 

Si vous avez une petite idée :)

 

Merci :)


Message édité par qunqun le 04-04-2011 à 12:26:26
Reply

Marsh Posté le 04-04-2011 à 12:14:39   

Reply

Marsh Posté le 05-04-2011 à 13:05:46    

si tu veux que tes messages s'affichent au format texte, à ta ligne 151 tu dois mettre
Content-Type: text/plain;

Reply

Marsh Posté le 05-04-2011 à 17:53:10    

Pas de changement non plus :(
Le problème reste que le code html est toujours visible dans l'email, ce qui peut parfois s'avérer gênant lors de la lecture.
 
Merci.


Message édité par qunqun le 05-04-2011 à 20:00:45
Reply

Marsh Posté le 05-04-2011 à 21:20:35    

oui mais c'est normal que le code HTML apparaisse puisqu'il est présent dans ta variable $message.
 
 

Reply

Marsh Posté le 07-04-2011 à 10:15:22    

Merci :D
Je le dirais au codeur :o

Reply

Marsh Posté le 07-04-2011 à 10:28:36    

Au niveau sécurité, ton script peut servir à envoyer les messages qu'on veut à qui on veut :
Si on envoie en post

Code :
  1. destinataire:pigeon@pigeon.fr
  2. message:bonjour, j'ai hérité de la fortune de mon père ...


la ligne 155 écrasera les valeurs settées en 120 et 68
on transforme donc ton appli en serveur d'envoi de spam.

 

Pour ton problème, qu'est ce qui s'affiche ?
est-ce les balises HTML (genre <br/> ) ?
ou les variables PHP (genre $nom) ?
Parce que c'est bizarre, tu crées le message en utilisant les variables postées avant de les créer. (sauf si register_globals està ON, ce qui est vivement déconseillé).

 


Sinon, tu sépares les différents headers par rn au lieu de \n, donc ils ne sont pas pris en compte.

 

Bref, ce script est à refaire entièrement.

Message cité 1 fois
Message édité par Paulp le 07-04-2011 à 10:29:14
Reply

Marsh Posté le 07-04-2011 à 11:15:02    

Paulp a écrit :

Au niveau sécurité, ton script peut servir à envoyer les messages qu'on veut à qui on veut :
Si on envoie en post

Code :
  1. destinataire:pigeon@pigeon.fr
  2. message:bonjour, j'ai hérité de la fortune de mon père ...
 


la ligne 155 écrasera les valeurs settées en 120 et 68
on transforme donc ton appli en serveur d'envoi de spam.

 

Pour ton problème, qu'est ce qui s'affiche ?
est-ce les balises HTML (genre <br/> ) ?
ou les variables PHP (genre $nom) ?
Parce que c'est bizarre, tu crées le message en utilisant les variables postées avant de les créer. (sauf si register_globals està ON, ce qui est vivement déconseillé).

 


Sinon, tu sépares les différents headers par rn au lieu de n, donc ils ne sont pas pris en compte.

 

Bref, ce script est à refaire entièrement.

 

C'était les balises, mais le problème est résolu :D
Pour tout dire je suis un noob en php, j'y comprend très peu de choses. J'ai donc sous-traité la partie php :o

 

\r\n n'a pas pour fonction d'afficher les accents ?

 

Merci

Message cité 1 fois
Message édité par qunqun le 07-04-2011 à 11:21:14
Reply

Marsh Posté le 07-04-2011 à 11:20:04    

qunqun a écrit :


 
C'était les balises, mais le problème est résolu :D
Pour tout dire je suis un noob en php, j'y comprend très peu de choses. J'ai donc sous-traité la partie php :o
 
rn n'a pas pour fonction d'afficher les accents ?


A mon avis, c'est à l'origine un \r\n, soit un saut de ligne sous windows.
 
A qui as-tu sous-traité la partie PHP ? Là c'est du travail de mauvais débutant.
 
Et le problème n'est pas résolu si :
- tu n'expliques pas comment (on a passé du temps à t'aider, ce serait sympa d'avoir un retour),
- tu n'as pas compris comment,
- tu ne corriges pas les erreurs mentionnées plus haut

Reply

Marsh Posté le 07-04-2011 à 11:29:08    

Paulp a écrit :


A mon avis, c'est à l'origine un rn, soit un saut de ligne sous windows.

 

A qui as-tu sous-traité la partie PHP ? Là c'est du travail de mauvais débutant.

 

Et le problème n'est pas résolu si :
- tu n'expliques pas comment (on a passé du temps à t'aider, ce serait sympa d'avoir un retour),
- tu n'as pas compris comment,
- tu ne corriges pas les erreurs mentionnées plus haut


Le 1er problème était l'affichage des balises html dans le corps du message. J'ai tout simplement supprimé les différentes balises html de la variable $message, comme l'a indiqué bricoco :)
C'était apparemment une variable qui envoie en texte, si des balises sont transmises, elle le seront sous la forme texte.

 


Par contre le :

 
Citation :

la ligne 155 écrasera les valeurs settées en 120 et 68
on transforme donc ton appli en serveur d'envoi de spam.
 


J'ai rien compris :D

 

Merci :)

Message cité 1 fois
Message édité par qunqun le 07-04-2011 à 11:30:07
Reply

Marsh Posté le 07-04-2011 à 12:17:10    

qunqun a écrit :


Le 1er problème était l'affichage des balises html dans le corps du message. J'ai tout simplement supprimé les différentes balises html de la variable $message, comme l'a indiqué bricoco :)
C'était apparemment une variable qui envoie en texte, si des balises sont transmises, elle le seront sous la forme texte.
 
 
Par contre le :
 

Citation :

la ligne 155 écrasera les valeurs settées en 120 et 68
on transforme donc ton appli en serveur d'envoi de spam.
 


J'ai rien compris :D
 
Merci :)


Au moment où le message est créé, la variable $nom vaut '', soit rien ...

Reply

Marsh Posté le 07-04-2011 à 12:17:10   

Reply

Marsh Posté le 07-04-2011 à 18:45:18    

Ben justement, elle récupère ensuite les données dans le formulaire, non?

Reply

Marsh Posté le 08-04-2011 à 09:22:27    

oui, mais $message est déjà créé.

Reply

Marsh Posté le 08-04-2011 à 15:04:17    

utilise une class genre PHPmailer pour envoyer les messages, ce sera bcp plus propre

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed