Php envoyer un e-mail

julienptr Messages postés 48 Statut Membre -  
ifisch Messages postés 192 Statut Membre -
Bonjour, j'ai ecrit ce code php pour que l'utilisateur puisse ecrir un e-mail a partir d'un formulaire mais je recoi e-mail sans les variables que j'ai crée quel qu'un peut t-il m'aider ?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
$Nom1 = $_POST['nom'];
$prenom2 = $_POST['prenom'];
$text = $_POST['text'];
$EMail = $_POST['EMail'];

$adresse = "test@gmail.com";
$sujet = "test";
$contenu_msg = " nom : $Nom1, prenom : $prenom2, e-mail client: $EMail, texte: $text" ;

$adresse_exp = "From: entreprise@test.fr";

mail($adresse, $sujet, $nom, $adresse_exp);
echo mail();
?>
Configuration: Mac OS X
Safari 531.21.10

31 réponses

  • 1
  • 2
Résumé de la discussion

Un formulaire HTML manipulé en PHP envoie le mail sans les variables saisies, le code lisant $_POST mais transmettant des valeurs inappropriées et des erreurs d’appel à mail. Pour cela, construire le contenu du message avec les données POST en utilisant des concaténations propres (Nom, Prénom, E-mail client et texte) et éviter les noms de variables non définis. Utiliser le bon appel mail avec les variables exactes et headers, par exemple mail($adresse, $sujet, $contenu_msg, $adresse_exp), et vérifier $_POST via print_r pour dépanner l’origine des données. D'autres éléments évoquent aussi la nécessité de vérifier si le script s’exécute côté serveur, et de tester les noms des champs du formulaire pour éviter des décalages avec $_POST.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Tu accèdes bien à cette page après avoir cliquer sur le bouton "Envoyer" d'un formulaire en method="post" ?
    0
  2. julienptr Messages postés 48 Statut Membre
     
    oui mon formulaire est bien avec la méthode post
    0
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Mais tu accèdes bien à cette page après l'avoir envoyé ou tu tappes directement l'url dans la barre d'adresse.
    Essaye avec ça :
    $contenu_msg = 'Nom : '.$Nom1."\n";
    $contenu_msg .= 'Prénom : '.$prenom2."\n";
    $contenu_msg .= 'E-mail client : '.$EMail."\n";
    $contenu_msg .= 'Texte : '.$text;
    0
  4. julienptr Messages postés 48 Statut Membre
     
    une fois que j'ai rempli le formulaire je recoi un e-mail avec écrit :
    nom: , prénom: , E-mail client: , texte:

    merci je vais asseiller comme sa.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. julienptr Messages postés 48 Statut Membre
     
    sa ne marche pas non plus ....
    0
  7. Miss_socrates Messages postés 925 Statut Membre 109
     
    moi aussi j'ai le même prob. J'ai mis une question hier mais je n'ai pas eu de réponse

    Merci de m'aider
    0
    1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
       
      Fais un up de ton topic est évite de faire du hors-sujet sur celui des autres.
      0
  8. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Avec ce que tu me donnes, impossible de trouver d'erreur.
    Soit les name de tes champs sont incorrectes, soit tu n'utilises pas la méthode POST ou tu accèdes directement à la page sans remplir le formulaire.
    0
  9. ifisch Messages postés 192 Statut Membre 17
     
    Peut-on voir le formulaire ?
    0
  10. julienptr Messages postés 48 Statut Membre
     
    oui mon formulaire est le suivent :

    <fieldset>
    <form action="mail2.php" method="post" enctype="texte/plain">
    <p>
    <label for="nom">Nom : </label>
    <input type="text" name="Nom1" id="Nom1" accesskey="n" />
    </p>
    <p>
    <label for="prenom">Prénom :</label>
    <input type="text" name="prenom" id="prenom" accesskey="p" />
    </p>
    <p>
    <label for="e-mail">E-mail</label>
    <input type="text" name="EMail" id="EMail" accesskey="m" />

    </p>
    <p>
    <textarea name="text" cols="60" rows="15" id="text" accesskey="m"></textarea>
    </p>

    <p>
    <input type="submit" name="Envoyer" id="envoyer" value="Envoyer" />
    </p>
    </form>
    </fieldset>
    0
  11. le père
     
    Bonjour

    Dans ton formulaire, enctype="text/plain" et non pas texte avec un e. Mais ça n'explique pas ton erreur.
    ton champ nom s'appelle Nom1 et non pas nom. Tu devrais donc avoir dans le traitement :
    $Nom1 = $_POST['Nom1'];
    Enfin, beaucoup plus bizarre, d'après ton script tu crées ton message dans la variable $contenu_msg, mais tu n'envoies pas cette variable, car ton instruction est mail($adresse, $sujet, $nom, $adresse_exp);. C'est donc incroyable que tu réussisses à recevoir un message avec nom: , prénom: , E-mail client: , texte: dedans...
    Je ne crois pas que la version de script que tu as donnée envoie ce message. Peux-tu donner la dernière version de ton script et le dernier comportement ?
    0
    1. Miss_socrates Messages postés 925 Statut Membre 109
       
      Bonjour le père

      Moi aussi j'ai un double problème avec mon formulaire, je reçois aussi un mail mais sans aucune donnée il n'y a que 5 étoiles.
      Peux-tu m'aider , le script se trouve à l'adresse du forum:

      https://forums.commentcamarche.net/forum/affich-16286466-recuperation-de-donnees-d-un-formulaire-maile#10#dernier

      Merci d'avance
      0
      1. le père > Miss_socrates Messages postés 925 Statut Membre
         
        Bonjour Miss_socrates

        Peux-tu créer ton propre fil et ne pas venir perturber celui de julienptr ?
        Tu n'as peut-être pas l'habitude des forums et tu ne le sais sans doute pas, mais ça ne se fait pas du tout.

        Pour créer un nouveau fil, écris ton message qund tu fois la liste des messages du forum, la fenêtre de saisie s'appelle "créer un nouveau message" et non pas "répondre"
        0
      2. le père > le père
         
        Pardon, je n'avais pas vu que l'autre fil était déjà créé. Mais ça ne se fait quand même pas...
        0
  12. julienptr Messages postés 48 Statut Membre
     
    lorsque je j'envoi ce formulaire a la page mail2.php :

    <fieldset>
    <form action="mail2.php" method="post" enctype="texte/plain">
    <p>
    <label for="nom">Nom : </label>
    <input type="text" name="Nom1" id="Nom1" accesskey="n" />
    </p>
    <p>
    <label for="prenom">Prénom :</label>
    <input type="text" name="prenom" id="prenom" accesskey="p" />
    </p>
    <p>
    <label for="e-mail">E-mail</label>
    <input type="text" name="EMail" id="EMail" accesskey="m" />

    </p>
    <p>
    <textarea name="text" cols="60" rows="15" id="text" accesskey="m"></textarea>
    </p>

    <p>
    <input type="submit" name="Envoyer" id="envoyer" value="Envoyer" />
    </p>
    </form>
    </fieldset>

    je recoi cette e-mail:

    Nom :
    Prénom :
    E-mail client :
    Texte :

    la page mail2.php est :

    <?php
    $M1 = $_POST['Nom1'];
    $prenom2 = $_POST['prenom'];
    $text = $_POST['text'];
    $EMail = $_POST['EMail'];

    $adresse = " test@gmail.com";
    $sujet = "test";
    $contenu_msg = 'Nom : '.$Nom1."\n";
    $contenu_msg .= 'Prénom : '.$prenom2."\n";
    $contenu_msg .= 'E-mail client : '.$EMail."\n";
    $contenu_msg .= 'Texte : '.$text;

    $adresse_exp = "From: mon_test@test.fr";

    mail($adresse, $sujet, $contenu_msg, $adresse_exp);
    ?>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <body>
    <?php
    0
  13. le père
     
    Ce script marche chez moi malgré les erreurs :
    espace en trop dans l'adresse $adresse = " test@gmail.com";
    erreur dans le nom de la variable $contenu_msg = 'Nom : '.$Nom1."\n"; : c'est $M1 qui contient le nom, pas $Nom1
    Ce qui suit le ?> est incomplet je suppose ? On ne devrait quand même pas trouver <body> sans avoir vu passer le </head>
    En mettant aussi une adresse correcte dans From:

    Confirmes-tu que tu reçois le mail sans les variables ? Je comprendrais que tu ne reçoives rien du tout à la rigueur, mais là ça m'étonne.

    autre détail : dans le formulaire, enctype="text/plain", pas "texte/plain"
    0
  14. le père
     
    Y a-t-il autre chose dans mail2.php avant la partie que tu montres ? Il y a peut-être un problème dans ce que tu ne montres pas ...
    Autre idée : au début de mail2.php, juste après le <?php, ajoute :
    print_r($_POST);
    0
  15. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Le problème est sans doute dans le enctype : corriges-le et si ça ne fonctionne toujours pas retire-le.
    0
    1. le père
       
      je ne crois pas. chez moi ça marche avec cette erreur (et les autres...)
      0
  16. julienptr Messages postés 48 Statut Membre
     
    pour déclare la variable nom j'écrit

    $M1 = print_r($_POST)['Nom1'];
    ou

    $M1 = print_r($_POST['Nom1'] );
    0
  17. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    print_r sert à explorer un array !
    Donc "$M1 = $_POST['Nom1'];" suffit
    0
  18. le père
     
    Oui $M1 = $_POST['Nom1'];" suffit
    mais ensuite, il faut faire $contenu_msg = 'Nom : '.$M1."\n"; et non pas $contenu_msg = 'Nom : '.$Nom1."\n";
    0
  19. le père
     
    J'en ai oublié de re-demander ce que donne le print_r($_POST);
    0
  20. julienptr Messages postés 48 Statut Membre
     
    j'ai écrit sa : (sela ne change rien )

    <?php
    print_r($_POST);
    $M1 = $_POST['Nom1'];
    $prenom2 = $_POST['prenom'];
    $text = $_POST['text'];
    $EMail = $_POST['EMail'];

    (merci beaucoup de m'aider )
    0
  21. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Il faut faire un echo du print_r()
    0
  • 1
  • 2