Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2873 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  mail illisible en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mail illisible en php

n°2067853
qunqun
Posté le 04-04-2011 à 12:14:39  profilanswer
 

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
mood
Publicité
Posté le 04-04-2011 à 12:14:39  profilanswer
 

n°2068129
bricocoman
j'aime les modos
Posté le 05-04-2011 à 13:05:46  profilanswer
 

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

n°2068252
qunqun
Posté le 05-04-2011 à 17:53:10  profilanswer
 

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
n°2068290
bricocoman
j'aime les modos
Posté le 05-04-2011 à 21:20:35  profilanswer
 

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

n°2068557
qunqun
Posté le 07-04-2011 à 10:15:22  profilanswer
 

Merci :D
Je le dirais au codeur :o

n°2068566
Paulp
~, sweet ~
Posté le 07-04-2011 à 10:28:36  profilanswer
 

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
n°2068586
qunqun
Posté le 07-04-2011 à 11:15:02  profilanswer
 

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
n°2068590
Paulp
~, sweet ~
Posté le 07-04-2011 à 11:20:04  profilanswer
 

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

n°2068596
qunqun
Posté le 07-04-2011 à 11:29:08  profilanswer
 

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
n°2068620
Paulp
~, sweet ~
Posté le 07-04-2011 à 12:17:10  profilanswer
 

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 ...

mood
Publicité
Posté le 07-04-2011 à 12:17:10  profilanswer
 

n°2068732
qunqun
Posté le 07-04-2011 à 18:45:18  profilanswer
 

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

n°2068782
Paulp
~, sweet ~
Posté le 08-04-2011 à 09:22:27  profilanswer
 

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

n°2068865
bricocoman
j'aime les modos
Posté le 08-04-2011 à 15:04:17  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  mail illisible en php

 

Sujets relatifs
[OL 2003] Consulter/ajouter dans Base Access depuis formulaire OutlookEnvoie E mail Automatique VB
[php] Envoyer resultat requete plusieurs ligne par mailProgrammation E-Mail Automatique
Probème d'accent dans le sujet de mail PHPmailer daemon, mail undelivered
Ajout de pièce jointe dans un mailcopier lignes excel et coller dans corps de mail outlook (VBA)
[Projet] Notifieur de mail USB adapté à Thunderbird[Résolu] Mail ecrit en chinois illisible envoye via un formulaire
Plus de sujets relatifs à : mail illisible en php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR