Mon script mail ne fonctionne pas

Eléphanteau du PHP | 11 Messages

17 août 2010, 20:13

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

ViPHP
ViPHP | 1996 Messages

17 août 2010, 21:08

Slt,

Avant ton extract($_POST); que te retourne var_dump($_post) .
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 11 Messages

17 août 2010, 21:17

Slt,

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

ViPHP
xTG
ViPHP | 7331 Messages

17 août 2010, 21:59

Pour debug on te demande de placer la fonction var_dump($_POST); devant la fonction extract($_POST) se trouvant dans ton code.

Eléphanteau du PHP | 11 Messages

17 août 2010, 22:04

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 :(

ViPHP
xTG
ViPHP | 7331 Messages

17 août 2010, 22:06

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é.

Eléphanteau du PHP | 11 Messages

17 août 2010, 22:13

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 ?

ViPHP
xTG
ViPHP | 7331 Messages

17 août 2010, 23:15

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 août 2010, 12:05

- 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 !
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 11 Messages

18 août 2010, 13:47

- 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 :(

Eléphant du PHP | 314 Messages

18 août 2010, 14:04

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
Cordialement,
Julien - http://laravel.fr/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 août 2010, 14:06

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... ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 11 Messages

18 août 2010, 14:12

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-|

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 août 2010, 14:50

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 11 Messages

18 août 2010, 15:03

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 ???