IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

envoi formulaire html, réception mail en texte brut


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 50
    Points : 35
    Points
    35
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 30
    Points
    30
    Par défaut
    Salut,

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


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    ?>

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    tout d'abord merci,
    je vais essayer les différentes possibilités vous tiens au courant de l'avancé.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    alors, suite du code (j'ai rajouté les lignes suivantes de mikah dans mon code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    suis-je bête, il fallait que je mette ça dans mon code html :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    "Content-type: text/html; charset=utf-8\r\n";

    bon, par contre pour le tableau j'ai du mal !!!

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 30
    Points
    30
    Par défaut
    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.


    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    ok merci.
    c'est reparti !!!!

  9. #9
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    j'avance grâce à ce que tu m'as dis :
    voici mon nouveau code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    c'est le 'while'...une vrai nouille !!!!
    merci encore pour tout...trop balèze.
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2010] Problème réception de messages envoyés en html mais reçus en texte brut
    Par nouvellesas dans le forum Outlook
    Réponses: 0
    Dernier message: 01/03/2013, 09h53
  2. Envoi formulaire html par mail
    Par kck61 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/01/2011, 14h14
  3. Problème d'envoi de Formulaire HTML par mail (mailto)
    Par flash_begin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/03/2007, 20h02
  4. Réponses: 3
    Dernier message: 06/03/2006, 11h34
  5. [HTML] affichage d'un text brut dans un tableau
    Par fren2809 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/10/2005, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo