Page 1 sur 2

Mon script mail ne fonctionne pas

Posté : 17 août 2010, 20:13
par JeCk
Bonjour,

J'ai écrit ce script mail php mais quand j'éffectue l'envoi par le formulaire html je ne reçois pas le mail dans ma boîte et le message de confirmation ne s'affiche pas non plus ...
:(

code html

Code : Tout sélectionner

<html> <head></head> <body> <form method="post" action="contact.php"> Nom :<input type="text" name="Nom" /><br> Prénom :<input type="text" name="Prenom" /><br> Télèphone :<input type="text" name="Telephone" /><br> Votre Email :<input type="text" name="email" /><br> Message :<textarea name="message" cols="30" rows="15"></textarea> <input type="submit" value="envoyer" /> </form> </body> </html>
code php

Code : Tout sélectionner

<?php if(isset($_POST) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['telephone']) && isset($_POST['email']) && isset($_POST['message'])){ extract($_POST); if(!empty($nom) && !empty($prenom) && !empty($telephone) && !empty($email) && !empty($message)) { $message=str_replace("\'","'",$message); $detinataire="[email protected]"; $sujet="formulaire de contact"; $msg="Une nouvelle question est arrivée \n Nom : $nom \n Prénom : $prenom \n Télèphone : $telephone \n Email : $email \n Message : $message"; $entete="From: $nom \n Reply-To: $email"; mail($detisnataire,$sujet,$message,$entete); echo "Votre message nous est bien parvenu, nous y répondrons dans les plus brefs delais."; } else{ echo "Vous n'avez pas rempli tout les champs."; } } ?>
Est-ce que quelqu'un à une idée du soucis ?

ps : je suis chez OVH pour info

Re: Mon script mail ne fonctionne pas

Posté : 17 août 2010, 21:08
par Aureusms
Slt,

Avant ton extract($_POST); que te retourne var_dump($_post) .

Re: Mon script mail ne fonctionne pas

Posté : 17 août 2010, 21:17
par JeCk
Slt,

Avant ton extract($_POST); que te retourne var_dump($_post) .
hum pas trop compris ?

Re: Mon script mail ne fonctionne pas

Posté : 17 août 2010, 21:59
par xTG
Pour debug on te demande de placer la fonction var_dump($_POST); devant la fonction extract($_POST) se trouvant dans ton code.

Re: Mon script mail ne fonctionne pas

Posté : 17 août 2010, 22:04
par JeCk
Pour debug on te demande de placer la fonction var_dump($_POST); devant la fonction extract($_POST) se trouvant dans ton code.
Merci de votre aide, mais çà ne change rien :(

Re: Mon script mail ne fonctionne pas

Posté : 17 août 2010, 22:06
par xTG
Evidemment, c'est pour le debug...
Donc ce qui est intéressant c'est ce que cette fonction affiche !
C'est d'ailleurs ce qu'il t'était demandé.

Re: Mon script mail ne fonctionne pas

Posté : 17 août 2010, 22:13
par JeCk
Evidemment, c'est pour le debug...
Donc ce qui est intéressant c'est ce que cette fonction affiche !
C'est d'ailleurs ce qu'il t'était demandé.
Ok, mais qu'est-ce qui ne colle pas dans le code ?
Pourquoi cela ne fonctionne pas ?

Re: Mon script mail ne fonctionne pas

Posté : 17 août 2010, 23:15
par xTG
C'est justement pour avoir plus d'informations sur ce qui ne va pas que Aureusms t'a demandé le résultat de cette opération.

Re: Mon script mail ne fonctionne pas

Posté : 18 août 2010, 12:05
par Ryle
- Où est-ce que vous avez mal ?
- Oh non docteur, moi je veux juste savoir pourquoi j'ai mal...
:langue: (je taquine hein ;))

Pour debugger ton code, il faut procéder par étape. Il faut partir du résultat espéré et remonter jusqu'à l'erreur :
- Si le message "Votre message nous est bien parvenu, nous y répondrons dans les plus brefs delais." n'apparait pas, c'est que le code php n'arrive pas à s'exécuter jusque là.
=> dans la mesure où il n'y a pas d'erreur php au préalable (car tu nous l'aurais certainement signalé, n'est ce pas ?), problème peut provenir du if qui précède, la condition n'est peut être pas respectée.
- Si la condition du if n'est pas respectée, on devrait avoir le message "Vous n'avez pas rempli tout les champs." cependant, je suppose que celle-ci n'apparait pas non plus.
=> ni le if, ni le else ne sont exécutés, le problème est donc en amont. Contrôle le if qui précède, la condition n'est peut être pas respectée.
- Si la condition du if n'est pas respectée, il ne se passe rien (pas de else). Et c'est justement ce qui t'arrive. On peut donc supposer que la condition du if n'est pas respectée.
=> au moins l'une des conditions du if est fausse. reste à savoir laquelle.
- En affichant le contenu de $_POST comme demandé par Aureusms, tu verras rapidement si l'une des variable n'est pas renseignées.

Bon debugage !

Re: Mon script mail ne fonctionne pas

Posté : 18 août 2010, 13:47
par JeCk
- Où est-ce que vous avez mal ?
- Oh non docteur, moi je veux juste savoir pourquoi j'ai mal...
:langue: (je taquine hein ;))

Pour debugger ton code, il faut procéder par étape. Il faut partir du résultat espéré et remonter jusqu'à l'erreur :
- Si le message "Votre message nous est bien parvenu, nous y répondrons dans les plus brefs delais." n'apparait pas, c'est que le code php n'arrive pas à s'exécuter jusque là.
=> dans la mesure où il n'y a pas d'erreur php au préalable (car tu nous l'aurais certainement signalé, n'est ce pas ?), problème peut provenir du if qui précède, la condition n'est peut être pas respectée.
- Si la condition du if n'est pas respectée, on devrait avoir le message "Vous n'avez pas rempli tout les champs." cependant, je suppose que celle-ci n'apparait pas non plus.
=> ni le if, ni le else ne sont exécutés, le problème est donc en amont. Contrôle le if qui précède, la condition n'est peut être pas respectée.
- Si la condition du if n'est pas respectée, il ne se passe rien (pas de else). Et c'est justement ce qui t'arrive. On peut donc supposer que la condition du if n'est pas respectée.
=> au moins l'une des conditions du if est fausse. reste à savoir laquelle.
- En affichant le contenu de $_POST comme demandé par Aureusms, tu verras rapidement si l'une des variable n'est pas renseignées.

Bon debugage !

J'ai toujours mal docteur :(

Mais je ne sais pas ou ...

Je retorune ce code depuis plus de 3h et je ne parviens pas à comprendre, aussi je pensais être dans la section débutants, j'éspèrais un coup de pouce :(

Re: Mon script mail ne fonctionne pas

Posté : 18 août 2010, 14:04
par AoSiX
Debugage à l'ancienne...
<?php
echo "1";
if(isset($_POST) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['telephone']) && isset($_POST['email']) && isset($_POST['message'])){
echo "2";
   extract($_POST);
echo "3";
   if(!empty($nom) && !empty($prenom) && !empty($telephone) && !empty($email) && !empty($message)) {
echo "4";
       $message=str_replace("\'","'",$message);
echo "5";
       $detinataire="[email protected]";
	   $sujet="formulaire de contact";
	   $msg="Une nouvelle question est arrivée \n
	   Nom : $nom \n
	   Prénom : $prenom \n
	   Télèphone : $telephone \n
	   Email : $email \n
	   Message : $message";
	   $entete="From: $nom \n  Reply-To: $email";
	   mail($detisnataire,$sujet,$message,$entete);
	   echo "Votre message nous est bien parvenu, nous y répondrons dans les plus brefs delais.";
  }
   else{
        echo "Vous n'avez pas rempli tout les champs.";
  }
}

?>
mets ce code et dis moi ce qui s'affiche

Re: Mon script mail ne fonctionne pas

Posté : 18 août 2010, 14:06
par Ryle
Il me semblait pourtant que c'est ce que l'on avait fait... m'enfin bon...

As-tu des messages d'erreur ? si oui lesquels ? (les symptômes ça a toujours aidé à identifier les maladies ;))

Si non, lorsque tu envois ton formulaire à ta page contact.php, que contiennent les variables :
- $_POST['nom']
- $_POST['prenom']
- $_POST['telephone']
- $_POST['email']
- $_POST['message']
... lorsque tu arrives sur la page contact.php ?

En effet, si tu n'entres pas dans le if, c'est qu'au moins une de ces variables n'est pas définie. En sachant laquelle (ou lesquelles) il sera déjà beaucoup plus facile d'aller voir pourquoi elle n'est pas définie (si je sais que tu as mal au bras, je vais arrêter de t'ausculter les orteils ;))

A première vue, je dirais que les trois premières ne sont pas définies (mais ça, il n'y a que toi pour nous le confirmer). Si c'est bien le cas, il faut s'intéresser à pourquoi est-ce qu'elles ne sont pas définies. Pour cela, il n'y a rien de mieux que d'afficher le contenu de $_POST comme l'a demandé Aureusms dès le début.

Tu verras ainsi les informations transmises par ton formulaire et tu pourras les comparer à celles que tu attends. Tu verras alors qu'il y a une différence entre les deux et tu pourras la corriger (soit lors de leur envoi, soit lors de leur réception, comme bon te semblera).

Je pourrais aussi te dire directement ce qui ne va pas, mais je pense qu'il est préférable de t'expliquer comment le trouver par toi même, justement parce que tu es débutant. Tu pourras ainsi résoudre ce problème par toi même, mais aussi et surtout les prochains :)

Et pour te mettre sur la piste si tout cela n'a pas suffit, il faut savoir que php est sensible à la casse (majuscule/minuscule) pour les noms des variables... ;)

Re: Mon script mail ne fonctionne pas

Posté : 18 août 2010, 14:12
par JeCk
Il me semblait pourtant que c'est ce que l'on avait fait... m'enfin bon...

As-tu des messages d'erreur ? si oui lesquels ? (les symptômes ça a toujours aidé à identifier les maladies ;))

Si non, lorsque tu envois ton formulaire à ta page contact.php, que contiennent les variables :
- $_POST['nom']
- $_POST['prenom']
- $_POST['telephone']
- $_POST['email']
- $_POST['message']
... lorsque tu arrives sur la page contact.php ?

En effet, si tu n'entres pas dans le if, c'est qu'au moins une de ces variables n'est pas définie. En sachant laquelle (ou lesquelles) il sera déjà beaucoup plus facile d'aller voir pourquoi elle n'est pas définie (si je sais que tu as mal au bras, je vais arrêter de t'ausculter les orteils ;))

A première vue, je dirais que les trois premières ne sont pas définies (mais ça, il n'y a que toi pour nous le confirmer). Si c'est bien le cas, il faut s'intéresser à pourquoi est-ce qu'elles ne sont pas définies. Pour cela, il n'y a rien de mieux que d'afficher le contenu de $_POST comme l'a demandé Aureusms dès le début.

Tu verras ainsi les informations transmises par ton formulaire et tu pourras les comparer à celles que tu attends. Tu verras alors qu'il y a une différence entre les deux et tu pourras la corriger (soit lors de leur envoi, soit lors de leur réception, comme bon te semblera).

Je pourrais aussi te dire directement ce qui ne va pas, mais je pense qu'il est préférable de t'expliquer comment le trouver par toi même, justement parce que tu es débutant. Tu pourras ainsi résoudre ce problème par toi même, mais aussi et surtout les prochains :)

Et pour te mettre sur la piste si tout cela n'a pas suffit, il faut savoir que php est sensible à la casse (majuscule/minuscule) pour les noms des variables... ;)

Je viens de trouver le probléme :!:

Mes champs du formulaire html etait nommé avec une majuscule et çà bloquais le fonctionnement du script apparament maintenant j'en ai un autre :cry:

je reçois pas le mail 8-|

Re: Mon script mail ne fonctionne pas

Posté : 18 août 2010, 14:50
par Ryle
Ok, donc cette fois tu rentres bien dans le if(), tu as bien le message de confirmation d'envoi de mail, et toujours pas d'erreur php. Il faut donc chercher le problème dans les valeurs que tu transmets à la fonction mail. Est-ce que l'adresse mail est la bonne ? etc.

Cette fois ce n'est pas un problème de majuscule/minuscule, mais de nom de variable :) Tu envois un mail à l'adresse contenue dans la variable $detisnataire, mais cette variable n'existe pas dans ton code, résultat pas d'adresse mail à notifier... et php est assez strict en la matière ;)

Tu auras d'ailleurs un problème similaire une fois celui-ci corrigé, car le mail que tu recevras sera vide... je te laisse trouver pourquoi ;)

Re: Mon script mail ne fonctionne pas

Posté : 18 août 2010, 15:03
par JeCk
Ok, donc cette fois tu rentres bien dans le if(), tu as bien le message de confirmation d'envoi de mail, et toujours pas d'erreur php. Il faut donc chercher le problème dans les valeurs que tu transmets à la fonction mail. Est-ce que l'adresse mail est la bonne ? etc.

Cette fois ce n'est pas un problème de majuscule/minuscule, mais de nom de variable :) Tu envois un mail à l'adresse contenue dans la variable $detisnataire, mais cette variable n'existe pas dans ton code, résultat pas d'adresse mail à notifier... et php est assez strict en la matière ;)

Tu auras d'ailleurs un problème similaire une fois celui-ci corrigé, car le mail que tu recevras sera vide... je te laisse trouver pourquoi ;)
hum je viens de relire chaque ligne et j'ai remarqué des fautes de frappe :oops:

merci pour l'aide :)

Je reçois bien le mail, je peux le lire correctement mais voilà que je rencontre un autre probléme :priere:

quand j'incorpore le formulaire html dans ma page qui est gérèe par des pseudo frame c'est-à-dire : http://www.monsite.com/index.php?page=contact_us
les champs à remplir sont invisibles mais je peux ecrire dedans, çà fait pas trés ésthètique, qu'est-ce qui génère ce probléme ???