Récupérer les données d'un formulaire et les envoyer par mai

Eléphanteau du PHP | 14 Messages

19 janv. 2011, 15:23

Bonjour
J'ai pas mal écumé le Web et les forums à la recherche de la solution à mon problème, mais sans succès.
J'ai bien trouvé le code ci-dessous, mais il ne m'envoie aucun mail.
Y a-t-il quelque chose que j'ai mal fait ? Y a-t-il peut-être quelque chose à régler du côté de Wamp ?
Avez-vous une autre solution ?
Tout mon site est fait en XHTML/CSS, et je suis absolument neuneu en PHP.
Merci infiniment !

Ma partie HTML :

Code : Tout sélectionner

<form method="POST" action="formmail.php" > <fieldset> <input type="hidden" name="subject" value="formmail"> <label for="nom">Nom :</label><input type="text" id="nom" /> <label for="prenom">Prénom :</label><input type="text" id="prenom" /> <label for="email">Email :</label><input type="text" id="email" /> <label><INPUT TYPE="submit" VALUE="Envoyer" ></label> </fieldset> </form>
Ma partie PHP, que j'ai mis dans le <body> :

Code : Tout sélectionner

<?php $TO = "[email protected]"; $h = "From: " . $TO; $message = ""; while (list($key, $val) = each($HTTP_POST_VARS)) { $message .= "$key : $val\n"; } mail($TO, $subject, $message, $h); Header("Location: http://localhost/sfp/fr/"); ?>

ViPHP
ViPHP | 2577 Messages

19 janv. 2011, 15:40

Bonjour,

je te conseille d'envoyer le mail comme cela :
error_reporting(E_ALL);
if mail($TO, $subject, $message, $h)
{
Header("Location: http://localhost/sfp/fr/");
}
else
{
   echo 'erreur envoi mail';
}
Cela devrai te permettre de voir l'erreur sur la fonction mail.
Sous windows, il faut paramétrer le serveur SMTP dans php.ini en prenant celui de ton fournisseur d'accès internet.

Eléphanteau du PHP | 14 Messages

19 janv. 2011, 17:11

Merci de ta réponse.
J'ai effectivement résolu le problème de l'envoi de mail : c'était à cause du serveur SMTP.
Je l'ai donc mis sur un serveur et il envoie bien un mail, mais celui-ci m'arrive vide...
Iiiirk.

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

19 janv. 2011, 17:33

salut,


il ne faut aucun affichage avant un header et ce n'est pas le cas dans ton script vu le message d'erreur.

vérifie le contenu des variables que tu envoie avant envoie pour être certain du contenu.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

19 janv. 2011, 17:59

Excuse-moi, je suis super neuneu en PHP, et je ne comprends même pas ce que tu m demandes...
La preuve : J'avais mis le PHP dans le <body> en laissant l'en-tête HTML. Maintenant dans ma page PHP, je n'ai plus que le PHP. C'est de ça dont tu parles peut-être ?
Tout marche maintenant, sauf que je reçois un mail avec comme seul texte : subject : formmail
Il ne comprend pas quelles données récupérer dans mon formulaire ?

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

19 janv. 2011, 18:12

heu wé mais sinon le php avant le html
par exemple
<?php
// validation du formulaire et envoie du mail

?>
<html>
<head></head>
<body>
blabla
</body>
</html>
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

19 janv. 2011, 18:22

Ah OK je saurai pour la prochaine fois, merci.
Néanmoins, là c'est un problème que j'avais résolu, aurais-tu une solution pour mon problème d'envoi de mail vide ?
Thanxs !

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

19 janv. 2011, 18:23

quel est le dernier code utiliser ?

le formulaire et la validation

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

19 janv. 2011, 18:50

Mon HTML :
<form method="POST" action="formmail.php" >
  <fieldset>
  <input type="hidden" name="subject" value="formmail"> 
          <label for="nom">Nom* :</label><input type="text" id="nom" size="70" />
          <label for="prenom">Prénom* :</label><input type="text" id="prenom" size="70" />
          <label for="adresse">Adresse* :</label><input type="text" id="adresse" size="70" />
          <label><INPUT TYPE="submit" VALUE="Envoyer" ></label>
  </fieldset>
</form>
Mon PHP (intégralité du fichier PHP) :
<?php
$TO = [email protected]";

$h = "From: " . $TO;

$message = "";

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

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

Header("Location: http://ina.fr");

?>

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

19 janv. 2011, 22:23

oula oui c'est du php3 la nan ? :)
<?php
$TO = [email protected]";

$h = "From: " . $TO;

$message = $_POST['nom']."\r\n".$_POST['prenom']."\r\n".$_POST['adresse'];

mail($TO, $_POST['subject'], $message, $h);
header("Location: http://ina.fr");
?>
esdsai ça ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

20 janv. 2011, 00:20

Ca m'envoie toujours un mail dont le seul contenu est : subject : formmail

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

20 janv. 2011, 02:27

bon j'ai donc testé
<?php
$TO = "[email protected]";

$h = "From: " . $TO;
//bon ça c'est pour éviter le formulaire  :roll: (ça fonctionne pareil avec un formulaire)
$_POST = array('nom'=>'moog','prenom'=>'li','adresse' =>'jungle city ;)','subject'=>'ceci est un mail de test ^^');
$message = $_POST['nom']."\r\n".$_POST['prenom']."\r\n".$_POST['adresse'];

if (mail($TO, $_POST['subject'], $message, $h)) {
echo 'mail oki !';
}
else echo 'mail nok :\'(';
//header("Location: http://ina.fr");
?>
mail reçu
- titre ceci est un mail de test ^^
- message
moog
li
jungle city ;)
le code est donc fonctionnel.

si ça ne l'est pas pour toi peut tu vérifier si
- l'affichage des erreurs est actif ?
- un var_dump($_POST); fournit bien les valeurs saisies dans le formulaire
- dans le formulaire html la méthode est normalement en minuscule, mais il me semble que ça change rien.

au pire test ce code de ce message tu verra bien ce que ça donne

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

20 janv. 2011, 02:38

bon j'ai donc testé
Merci !

J'ai pris ton PHP et l'ai mis à la place du mien et j'ai reçu le même mail que toi.
Maintenant comme je suis newbie totale en PHP je ne suis pas sûre de saisir ce que tu me demandes :
l'affichage des erreurs est actif ?
J'ai regardé dans le fichier 'apache_error.log' mais il n'y avait rien à la date d'aujourd'hui.
un var_dump($_POST); fournit bien les valeurs saisies dans le formulaire
Excuse-moi mais je ne comprends pas ce que ça veut dire.

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

20 janv. 2011, 03:55

juste mettre un var_dump($_POST); dans le fichier cible du formulaire pour voir si tu a bien toute les info du formulaire qui s'affichent

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

20 janv. 2011, 22:20

Bonsoir
Je l'ai donc mis dans formmail.php, au début, comme ça :
<?php
var_dump($_POST);
$TO = "[email protected]";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: http://ina.fr");
?>
C'est ce que tu voulais ?

Ca n'a rien changé en tout cas.