Php pour l'envoie vers une boite mail

Résolu
DanouL Messages postés 785 Statut Membre -  
DanouL Messages postés 785 Statut Membre -
Bonjour,

je n'arrive pas a envoyer le formulaire vers une boite mail + message a l'écran

il y a le code pour envoyer en php :

<?php 
$TO = "mon adresse  mail"; 
$h = "From: " . $TO; 
while (list($key, $val) = each($_POST)) 
{$message .= "$key : $val\n";} 
mail($TO, "inscription newsletter", "$message", $h); 
?>


et mon code qui est en html ,(formulaire de contact ) avec le nom ,prénom adresse.....

et en en fin de code il y a 3 bouton ( envoyer ,rétablir,afficher )

2 sur 3 fonctionne ,celui qui ne fonctionne pas étant "envoyer"

<input type= "submit" value="Envoyer" id="submit" onClick="envoie(this.form)"/>


c'est 2 code sont-il bon ?

et donc je veut recevoir ce qui a été rempli dans le formulaire , dans la boite mail et si possible pas en "texte brute"


sur ce lien , il m'explique ce que je veut réaliser seulment je n'y arrive pas a mixé avec mon code personnel

https://a-pellegrini.developpez.com/tutoriels/php/mail/

Merci ,je commence a être pessimiste avec ce php




--
merci de ne pas oublier de mettre résolu lorsque cela est le cas ou de dire résolu quand vous ne pouvez pas !

+1 permet d'aider les autres !
----------------------------
[Aimer ce n'est pas renoncer à sa liberté, c'est lui donner un sens.]

2 réponses

Résumé de la discussion

Problème central: un formulaire HTML n'arrive pas à envoyer les données vers une boîte mail via PHP mail(), malgré l'existence d'un code serveur et d'un bouton Envoyer.
Plusieurs réponses proposent d'améliorer l'en-tête et le formatage: définir Mime-Version et Content-type: text/html pour envoyer un message HTML, et déléguer le traitement à un fichier dédié comme envoi.php.
Une nuance pratique consiste à créer un fichier dédié (envoi.php) pour traiter $_POST et composer le corps HTML du message, afin d'assurer un envoi fiable via mail() sans texte brut.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Meoran Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   208
     
    Salut,

    $h = "From: " . $TO;

    Tu t'envoies un mail à toi-même là. Tu en est conscient ?

    Sinon le code est correct...

    Pour formater ton texte en html, rajoute ceci aux headers :

    $h .= 'Mime-Version: 1.0'."\r\n";
    $h .= 'Content-type: text/html; charset=utf-8'."\r\n";

    TU peux ensuite rajouter du code html à ton texte qui sera interprété.
    1
    1. DanouL Messages postés 785 Statut Membre 26
       
      tout d'abord merci pour l'aide !

      ensuite

      $h .= 'Mime-Version: 1.0'."\r\n"; 
      $h .= 'Content-type: text/html; charset=utf-8'."\r\n"; 
      


      je le mets dans le php , par exemple a la fin ?



      et le From ,je mets un nom ou l'adress mail ?
      0
    2. Meoran Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   208
       
      Les lignes sont à rajouter juste après

      $h = "From: " . $TO"\r\n";

      From : adresse mail
      0
    3. DanouL Messages postés 785 Statut Membre 26
       


      ce qui donne




      <?php
      $TO = " mon adresse mail";
      $h = " mon adresse mail:"
      $h .= 'Mime-Version: 1.0'."\r\n";
      $h .= 'Content-type: text/html; charset=utf-8'."\r\n"; . $TO;
      while (list($key, $val) = each($_POST))
      {$message .= "$key : $val\n";}
      mail($TO, "inscription newsletter", "$message", $h);
      ?>




      ???
      0
    4. Meoran Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   208
       
      Presque :

      <?php
      $TO = " mon adresse mail";
      $h = "From: " . $TO"\r\n";
      $h .= 'Mime-Version: 1.0'."\r\n";
      $h .= 'Content-type: text/html; charset=utf-8'."\r\n"; . $TO;

      //Le message que tu souhaites envoyer

      $message = "Blablabla<b>blabla</b>...etctectc";

      mail($TO, "inscription newsletter", "$message", $h);
      ?>

      Et il faut que tu formates le $message comme tu le souhaites avec des balises html.
      0
    5. DanouL Messages postés 785 Statut Membre 26
       
      c'est bien pour ce que je veut ? :je veut recevoir ce qui a été rempli dans le formulaire , dans la boite mail et si possible pas en "texte brute" !
      0
  2. DanouL Messages postés 785 Statut Membre 26
     
    j'ai donc crée le fichier envoi.php

    et le résumer e tout est :


    <FORM method="post" action="envoi.php" >    
    
    
    <?php    
    $TO = "mon mail";    
    $h = "From: " . $TO"\r\n";    
    $h .= 'Mime-Version: 1.0'."\r\n";    
    $h .= 'Content-type: text/html; charset=utf-8'."\r\n"; . $TO;    
    
    $message = "Bonjour,<br/>    
    l'utilisateur <b>$_POST['login']</b> viens de vous envoyer un <u>mail</u>.<br/>Son nom est $_POST['nom] et son prénom $_POST[prénom']. Son commentaire est $_POST['comm'] ";    
    
    mail($TO, "inscription formualaire", "$message", $h);    
    ?>    
    


    la j'ai bon ? :)

    merci de ne pas oublier de mettre résolu lorsque cela est le cas ou de dire résolu quand vous ne pouvez pas !

    +1 permet d'aider les autres !
    ----------------------------
    [Aimer ce n'est pas renoncer à sa liberté, c'est lui donner un sens.]
    0
    1. Meoran Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   208
       
      Le $message n'est qu'un exemple

      A toi de le formater comme tu veux


      Pour accéder à la valeur saisie par l'utilisateur dans le champ pays par exemple, tu y accèdes par $_POST['pays']
      0
    2. DanouL Messages postés 785 Statut Membre 26
       
      sayé je l'et formater comme je le voulais !
      le $_POST['pays'] je l'est rajouter a la suite de $_POST['comm'] "; ?

      jusque la c'est bon ?

      je serai de retour fin d'après ,ta ma énormément aider je te remercie beaucoup a tout a l'heure
      0
    3. DanouL Messages postés 785 Statut Membre 26
       
      me revoila :)

      je fait un résumer de ce que j'ai fait :

      - j'ai donc crée un fichier envoi.php :

      <FORM method="post" action="envoi.php" > 
      
      
      <?php 
      $TO = "clubsalon555@gmail.com"; 
      $h = "From: " . $TO"\r\n"; 
      $h .= 'Mime-Version: 1.0'."\r\n"; 
      $h .= 'Content-type: text/html; charset=utf-8'."\r\n"; . $TO; 
      
      $message = "Bonjour,et merci pour votre message <br/> 
      l'utilisateur <b>$_POST['login']</b> viens de vous envoyer un <u>mail</u>.<br/>Son nom est $_POST['nom] et son prénom $_POST[prénom']. Son commentaire est $_POST['comm'] "; 
      $_POST['pays']
      mail($TO, "inscription formualaire", "$message", $h); 
      ?> 


      voila
      0
    4. Meoran Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   208
       
      Re,

      c'est presque bon. Je ne vois pas de champ "login" (d'input avec pour name : login) dans ton formulaire.

      $_POST['login'] n'existe donc pas.
      0
    5. Meoran Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   208
       
      <div><span><label for="nom">Nom<span class="Style3">*</span> : </label>
      <input id="nom" name="nom" type="text" /></span>

      <br/><br/>

      <span><label for="nom">Prenom<span class="Style3">*</span> : </label>

      <input type="text" id="prenom" name="nom" /></span>

      ET en reprenant ton code,

      tu donnes deux fois le même nom à deux inputs différents, ça peut pas le faire...

      <div><span><label for="nom">Nom<span class="Style3">*</span> : </label>
      <input id="nom" name="nom" type="text" /></span>

      <br/><br/>

      <span><label for="nom">Prenom<span class="Style3">*</span> : </label>

      <input type="text" id="prenom" name="prenom" /></span>

      Ainsi la valeur saisi par l'utilisateur dans le champ "nom" se retrouvera dans $_POST['nom']

      et "prenom" se retrouvera dans $_POST['prenom']
      0