Bonjour,

J'ai sur mon site un formulaire de contact en PHP qui m'envoie parfaitement un mail avec le sujet, et l'objet du message MAIS je ne reçois pas le mail qui est remplis dans la case "email" de mon formulaire (ce qui est particulièrement handicapant...). Smiley bawling

Que le mail du contact soit valide ou non, je reçois un mail (qui contient donc le message et l'objet rentré dans le formulaire sur mon site) de CGI-Mailer (cgi-mailer@kundenserver.de) sans aucune mention du mail de contact rentré dans le formulaire (donc aucun moyen de recontacter la personne...

Je ne vois pas du tous pourquoi (je suis débutante, et le php est un grand mystère pour moi) et j'aurais bien besoin d'un petit coup de pouce ...

Voilà mon php

<?php
	$TO = "melanie.sutter@outlook.com";
	$from = $_POST['nom'].', '.$_POST['email'];

	$h  = "De: " . $from;

	$subject = 'Sujet : '.$_POST['objet']; 
	$message = $_POST['message'];

	/*while (list($key, $val) = each($_POST)) {
	  $message .= "$key : $val\n";
	}*/

	mail($TO, $subject, $message, $h);

	header("Location: ../contact.html?send=ok#page-contact"); 
	?>


Le code du formulaire en lui même :

<form action="php/reception.php" method="post" name="contact">
					  <div class="form-group">
					    <label for="InputName1">Votre Nom</label>
					    <input name="nom" type="text" class="form-control" id="name" required="required">
					  </div>
					  <div class="form-group">
					    <label for="InputEmail1">Votre E-mail</label>
					    <input name="email" type="email" class="form-control" id="Email" required="required">
					  </div>
					  <div class="form-group">
					    <label for="InputSubject1">Objet</label>
					    <input name="objet"type="text" class="form-control" id="objet">
					  </div>
					  <div class="form-group">
					  	<label for="message1">Votre Message</label>
					  	<textarea required="required" name="message" class="form-control" id="message1" rows="3"></textarea>
					  </div>
					  <input type="submit" value="Envoyer" />
					</form>


et le script contenue dans la page html
<script> $(".toshow").hide();
$(".btn-group-lg").on("click", function() {
  var target = $(this).data("target");
  if(target!==undefined) {
    $(target).toggle();
      $(this).toggleClass("active",$(target).is(":hiden"));
  }
});
   var send = window.location.search;

   if (send == '?send=ok') {
      $('#feedback').delay(500).slideToggle();
   }

</script>



Merci à tous par avance pour votre aide Smiley smile
Modifié par Myly (16 Mar 2016 - 14:24)
Salut,

J'ai l'impression qu'il te manque quand même toute la partie header dans ton envoie de mail ...
Bonjour Myly,

Il semble que tu te soie emmêlée les pinceaux dans ton code. En effet, la partie html que tu dis "être ton formulaire" paraît n'être ni plus ni moins qu'une liste de liens vers les réseaux sociaux.

Pour preuve ton code commence par un élément UL (block de type liste ; attendu succession de LI avant fermeture).

Un formulaire commence par une balise Form et contient des éléments Input (champs de saisie utilisateur) et un élément de type "submit" qui peut être soit un Button soit un Input mais qui aura pour vocation d'envoyer les données.

Et là... ces éléments ne figurent pas. Un oubli ?

En tout cas c'est gentil d'avoir pensé à nous Smiley lol lol
Modifié par Greg_Lumiere (16 Mar 2016 - 11:12)
Ah oui autant pour moi, je suis allée un peu vite sur ce coup là, désolée.
J'ai mis le bon code cette fois Smiley cligne

JENCAL : Ce n'est pas cette partie là ?
mail($TO, $subject, $message, $h)
JENCAL a écrit :
Salut,

J'ai l'impression qu'il te manque quand même toute la partie header dans ton envoie de mail ...


Étonnamment cela ne semble pas poser de problème
Myly a écrit :
Que le mail du contact soit valide ou non, je reçois un mail (qui contient donc le message et l'objet rentré dans le formulaire sur mon site)


non->"CGI-Mailer doit sûrement s'en charger."
Edit: j'en dis des fois des bêtises...
Modifié par Greg_Lumiere (16 Mar 2016 - 14:26)
Dans un premier temps il serait intéressant de vérifier si le formulaire envoie les informations sous forme de cookie.

Pour cela tu peux tester dans la partie php les variables suivantes :
- $_POST['name'] // EDIT: c'est pas 'name' mais 'nom' voir astérisque
- $_POST['email']
etc

en incluant
echo $_POST['name'];


Ceci est une première étape qui conduit à 2 résultats (grosso modo) : les infos s'affichent, ok le problème est plus loin sinon il faut se pencher sur le formulaire.

Vu de loin le formulaire semble correct. Confirmes-tu ?

* entre crochet mettre les noms des champs de formulaires (attribut NAME):
Modifié par Greg_Lumiere (16 Mar 2016 - 11:30)
Quand j'ai débuté ce chapitre j'ai commencé par suivre ce tutoriel de la OpenClassrooms
Envoyer un mail en Php

ça devrait te renseigner sur ce que te dis Jencal



Edit:
Note à moi même, Openclassrooms c'est comme Alsacreations, il y a un s !
"a qui sont ces serpents qui sifflent sur nos têtes"
C'est quand même pas compliqué ?!
Modifié par Greg_Lumiere (16 Mar 2016 - 12:13)
J'ai donc ajouté ceci dans mon php

$_POST['nom'] ;
$_POST['email'];
$_POST['objet'];
$_POST['message'];

echo $_POST['nom'];
echo $_POST['email'];
echo $_POST['objet'];
echo $_POST['message'];


et du coup les infos s'affichent sur une page php de mon site (/php/reception.php).
ça veut dire que c'est bon ?
Modérateur
Bonjour,

Si on veut récupérer l'adresse email de la personne qui a rempli le formulaire, le plus simple est de l'ajouter dans le corps de l'email que l'on s'envoie (c'est à dire dans la variable $message ici si j'ai bien compris).


$message = "From ".$_POST['email']." ".$_POST['message'];


Amicalement,
"jusqu'ici tout va bien, jusqu'ici tout va bien...
le plus dur, ce n'est pas la chute...
"

Oui c'est bon signe ! On sait que ton contenu est enregistré dans les cookies.

La suite va être de vérifier dans la partie "construction du mail" que ces données soient bien conservées du début du script jusqu'à la fonction mail().

Même procédé, lorsque tu agit sur une de ces variables, tu teste juste après la valeur de cette variable pour vérifier que les changements ont bien été appliqués.

C'est ce qu'on appel debuger.

Par exemple tu récupère une variable en tête de script et tu y applique un traitement. Voici un exemple qui illustre mes propos
 /* Phase 1 */
$_name = $_POST['nom'];
echo $_name; /* <= ici on controle la récupération du cookie */


/* PHASE 2 */
$_name = $_POST['nom'];
$_name_transformed = $_name.'ici je mets du texte mais on peut imaginer l'exécution d'une fonction';
echo $_name_transformed;


/* PHASE 3 */
$_name = $_POST['nom'];
$_name_transformed = $_name.'ici je mets du texte mais on peut imaginer l'exécution d'une fonction';
[...]
$_message = $_nom.' a écrit un ceci :'.$_message;
echo $_message;
et ce jusqu'à la fonction mail().

Ainsi tu élimine toute erreur préalable. Si après ça ça ne fonctionne toujours pas correctement (probable) je t'invite à consulter le lien que je t'ai mis plus tôt.

Sache toutefois que l'utilisation de la fonction mail() n'est pas le meilleur choix pour envoyer un mail. Perso j'utilise fsocketopen() ; un petit peu plus difficile à appréhender mais beaucoup plus efficace (résous les pbs de mails considérés comme des spams dans mon cas).
Modifié par Greg_Lumiere (16 Mar 2016 - 15:58)
ça marche !
Merci beaucoup Smiley lol

Je vais m'atteler tous de même au lien d'OpenClasserooms, (parce que c'est quand même toujours plus mieux de comprendre le comment du pourquoi).
Et merci également pour l'info "fsocketopen()" je vais voir si j'arrive à me dépatouiller avec Smiley smile

Merci encore à tous !
Myly a écrit :
Merci beaucoup
mais de rien, aujourd'hui je ne fais pas payer Smiley cligne

Myly a écrit :
ça marche !
et pourrait-on savoir pourquoi ? Quelle était la truffe ?