Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2011, 09h01   #1
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
Par défaut envoi formulaire html, réception mail en texte brut

Bonjour à tous,
une petite question à vous soumettre et qui me pose problème (débutant codeur).
je veux envoyer le résultat de champs de saisies vie un formulaire puis l'envoyer par mail au gestionnaire. j'ai un problème de formatage de texte à la réception de mon mail, je reçois en texte brut. normal ?
ceux qui ont le courage de tester (c'est vraiment pa terrible),
voici mon formulaire (y'a surement mieux mais je débute) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 
<html>
<head><title>Formulaire</title>
<meta http-equiv="Content-Type" content="html; charset=iso-8859-1">
</head>
<body>
 
<form name='formulaire' action='traitement.php' method='post'>
 
<p align="center"><font color="#2A2AFF">Fiche</font></p>
<p><b><i><u>Fiche créée le :</u></i></b> 
 
   <br><br> <b><i><u><td>Auteur &nbsp;</td></u></i></b><br><br>
    <select name="Auteur">
      <option></option>
    <option>Nom1</option>
    <option>Nom2</option>
    </select>
</p>
<p> <br/>
  <b><i><u>Nature de l'opération </u></i></b> </p>
  <table width="91%" border="0">
    <tr> 
      <td width="13%"><input name="Installation" type="checkbox">
        Installation &nbsp;</td>
      <td width="12%"> <div align="left"> 
          <select name="Installation">
           <td><select name="Déplacement">
          <option></option>
          <option>choix1</option>
          <option>choix2</option>
          <option>choix3</option>
          </select>
        </div></td>
      <td width="75%">&nbsp;</td>
    </tr>
    <tr> 
      <td><input name="Déplacement" type="checkbox">
        Déplacement &nbsp;</td>
      <td><select name="Déplacement">
          <option></option>
          <option>choix1</option>
          <option>choix2</option>
          <option>choix3</option>
          </select></td>
      <td>&nbsp;&nbsp;&nbsp; Vers : &nbsp; <select name="Vers">
          <option></option>
          <option>choix1</option>
          <option>choix2</option>
          <option>choix3</option>
          </select></td>
    </tr>
    <tr> 
      <td><input type="checkbox" name="Sortie Inventaire"/>
        Sortie Inventaire </td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td><input type="checkbox" name="Destruction"/>
        test</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </table>
<p> <em><strong><u>Informations</u></strong></em></p>
  <table width="91%" height="56" border="0">
    <tr align="left" valign="middle"> 
      <td width="13%" height="26" valign="top">Nature du Mat&eacute;riel </td>
      <td width="87%" valign="middle"> <select name="Nature Matériel">
          <option></option>
          <option>choix1</option>
          <option>choix2</option>
        </select> </td>
    </tr>
    <tr> 
      <td height="24" valign="top">Num&eacute;ro de s&eacute;rie</td>
      <td valign="middle"> <input type="text" name="Numéro de Série"> </td>
    </tr>
  </table>
<p><em><strong><u>Pour l'inventaire</u></strong></em></p>
  <table width="91%" height="27" border="0">
    <tr valign="middle"> 
      <td width="13%" height="23"> <div align="left">inventaire</div></td>
      <td width="87%"> <div align="left"> 
          <input type="text" name="Date saisie Parc info">
        </div></td>
    </tr>
  </table>
  <p><br />
    <input type="submit" value="Envoyer">
    <br>
    <br>
    <input type="reset" value="Corriger" name="reset"></p>
    </p>
</form>
 
</body>
</html>
et le code php qui traite l'envoi (traitement.php) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
<?php
ini_set('SMTP',xxxx.fr');
 
$TO = "xx@xx.fr";
$subject = "Fiche";
$h = "From: " . $TO;
 
$message = "";
 
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
 
mail($TO, $subject, $message, $h);
 
 
?>
Je pensais que je les recevrait en html (pour info, ma messagerie est thunderbird (obligatoire) et j'envoi et reçois mes messages en html sans soucis).
quelqu'un pourrait éclairer ma lanterne ?
Merci d'avance et désolé si ce post fait doublon.

ah oui j'oubliais, mes caractères accentués sont impec' mais mes espaces sont remplacés par des "_" dans le nom des input type text.
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 10h01   #2
Nouveau Membre du Club
 
Mika
Inscription : avril 2009
Messages : 31
Détails du profil
Informations personnelles :
Nom : Mika
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : avril 2009
Messages : 31
Points : 25
Points : 25
Salut,

Pour envoyer un mail au format HTML, tu dois configurer le type Content-type, définit dans l'entête. Exemple :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<?php
$to = 'to@mail.fr';
$from = 'from@mail.fr';
$subject = 'Subject';
$corps = '
	contenu HTML de ton message sous forme de tableau par exemple
	<table>
  	<tr>
    	<td>Ligne 1 Col 1</td>
    	<td>Ligne 1 Col 2</td>
    </tr>
  	<tr>
    	<td>Ligne 2 Col 1</td>
    	<td>Ligne 2 Col 2</td>
    </tr>
  </table>
';
 
$headers  = '';
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "To: ".$to."\r\n";
$headers .= "From: ".$from."\r\n";
 
$mail = mail($to, $subject, $corps, $headers);
?>
mikah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 10h03   #3
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
De la lecture :
http://a-pellegrini.developpez.com/tutoriels/php/mail/

Cependant, étant donné que ton message est écris en texte brute, ca ne changera pas grand chose.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 10h54   #4
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
tout d'abord merci,
je vais essayer les différentes possibilités vous tiens au courant de l'avancé.
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h27   #5
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
alors, suite du code (j'ai rajouté les lignes suivantes de mikah dans mon code) :
Code :
1
2
3
 
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
ce qui me donne bien du html dans mon mail (super)
cependant, mes accent se transforme en "?" (mais vachement stylés ;-) )
une idée ?
mikah, quand tu me dis dans un tableau, comment je leur renvoi l'info à placer dans telle colonne ou ligne ? tu vois ce que je veux dire ?
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h34   #6
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
suis-je bête, il fallait que je mette ça dans mon code html :
Code html :
"Content-type: text/html; charset=utf-8\r\n";

bon, par contre pour le tableau j'ai du mal !!!
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h35   #7
Nouveau Membre du Club
 
Mika
Inscription : avril 2009
Messages : 31
Détails du profil
Informations personnelles :
Nom : Mika
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : avril 2009
Messages : 31
Points : 25
Points : 25
Citation:
cependant, mes accent se transforme en "?" (mais vachement stylés ;-) )
une idée ?
Cela vient d'un problème d'encodage de caractère, selon moi deux solutions :
  1. - mettre ta page en utf-8
  2. - supprimer l'encodage dans l'envoie de mail et laisser le gestionnaire de messagerie s'occuper de l'encodage.

Citation:
mikah, quand tu me dis dans un tableau, comment je leur renvoi l'info à placer dans telle colonne ou ligne ? tu vois ce que je veux dire ?
Je vois oui, cela c'est à toi de le gérer en préformatant le mail, exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
$corp = '
<table>
 <tr>
 	<td>Nom : </td>
 	<td>Prénom : </td>
 </tr>
 <tr>
  <td>'.$_POST['nom'].'</td>
  <td>'.$_POST['prenom'].'</td>
 </tr>
</table>'
;
?>
À toi de jouer !
mikah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h50   #8
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
ok merci.
c'est reparti !!!!
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h54   #9
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
j'avance grâce à ce que tu m'as dis :
voici mon nouveau code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
<?php
ini_set('SMTP','xxx.fr');
 
$TO = "xxx@xxxx.fr";
$subject = "Fiche Parc Informatique";
$h = "From: " . $TO;
$h = "MIME-Version: 1.0\r\n";
$h = "Content-type: text/html; charset=utf-8\r\n";
$message = '<table>
 <tr>
 	<td>Nom : </td>
 	 </tr>
 <tr>
  <td>'.$_POST['Auteur'].'</td>
   </tr>
</table>';
 
//$message = stripslashes(htmlentities($_POST["message"]));
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
 
mail($TO, $subject, $message, $h);
 
header('Location: http://xxxx/ficheparcinfo/index.htm', true, 303);
 
 
?>
il m'affiche donc bien sous forme de tableau le nom, cependant, il m'affiche aussi toutes les infos que j'avais fait avant en ligne (et que je veux supprimer maintenant que tu m'as donné cette magnifique solution).
je suis pas balaise du tout en php...
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h59   #10
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
c'est le 'while'...une vrai nouille !!!!
merci encore pour tout...trop balèze.
@+
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h40.


 
 
 
 
Partenaires

Hébergement Web