Script pour envoi formulaire vers mail

Résolu/Fermé
calimero - 16 juil. 2006 à 14:32
 m1602 - 28 mars 2017 à 00:25
Bonjour,

je suis débutante en programmation html, j'essaie de faire un formulaire pour un site web,

j'ai réussi à avoir la page html, mais quand je teste la saisie du nom et email, je suis dirigée vers la messagerie.

comment récupérer l'information directement et l'envoyer vers l'adresse email directement.

merci pour votre aide.

voici le code :

<FORM METHOD="POST" ACTION="mailto:test@yahoo.fr" enctype="text/plain">



<TABLE width="70%">
<TBODY>
<TR>
<TD width="7%"> </TD>
<TD> <P>Prénom</P></TD>
<TD width="1%"> </TD>
<TD><input name=prenom></TD>
</TR>
<TR>
<TD width="7%"> </TD>
<TD> <P>Email</P></TD>
<TD width="1%"> </TD>
<TD><INPUT name=email></TD>
</TR>
<TR>
<TD colSpan=3> </TD>
<TD><INPUT TYPE=submit VALUE="Inscrivez-moi"> </FORM>
</FORM>
</body>
</html>

61 réponses

Normalement il n'y à rien à changer sur cette ligne, je ne comprend aps pourquoi sa ne marche pas chez toi ....
Ce serait posible d'avoir ton code pour tester s'il te plait ?
1
Bonjour a tous,

Mon probleme est que le corps du message que je recoit est vide
Ma question est :

pour le fichier formail.php faut il mettre en haut de page :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

???

Par avance merci de vos réponse
0
Je vais mettre le plus simple des formulaires html + php avec
des détails précis.

Pour un formulaire html très simple :



<script>function checkrequired(which){
var pass=true
if (document.images){
for (i=0;i<which.length;i++){
var tempobj=which.elements[i]
if (tempobj.name.substring(0,8)=="required"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
pass=false
break
}
}
}
}
if (!pass){
alert("ICI VOTRE MESSAGE D'ERREUR EN CAS DE CHAMPS OBLIGATOIRE")
return false
}
else
return true
}

<form method="post" onSubmit="return checkrequired(this)" action="VOTRE PAGE.php">
<table border=0>
<tr>
	<td><font face="arial" size="2" color="#4B4B4B">Nom </td>
	<td>
	<input type=text  name="requiredNOM">
	</td>
<tr>
	<td><font face="arial" size="2" color="#4B4B4B"> Prenom </td>
	<td>
	<input type=password  name="requiredPRENOM">
	</td>

</tr>

<td coldspan=2>
<INPUT type=image src="LIEN D'UNE IMAGE POUR LE BOUTON ENVOYEZ" name="imag" alt="cliquer" >
</td>
</tr>
</table>
</form> 



Pour faire simple avec ce code copier/coller le dans bloc note :
A chaque champ NOM, PRENOM ... dans ( name="requiredPRENOM" )
REQUIRED devant PRENOM doit être laissez si vous souhaitez que ce champs soit obligatoire,
mais si vous souhaitez vous pouvez mettre autre chose après required.

Et si vous souhaitez qu'il ne soit plus obligatoire vous n'avez qu'a le retiré.

Ensuite : Pour LIEN D'UNE IMAGE POUR LE BOUTON ENVOYER,
mettez le lien d'une image que vous désirez pour remplacé le bouton ENVOYER classique,
et lorsque on clique dessus sa agira tel un bouton envoyé classique.

Une fois tout sa fait enregistrez le tout en le renommant en form.html par exemple,
Mais taché a bien mettre .html après le choix de renomé de votre page.


pour le code php le plus simple et efficace :

<?php
$TO = "VOTRE ADRESSE MESSAGERIE";

$h  = "From: " . $TO;

$message = "";

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

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

Header("Location: LIEN DE LA PAGE DONC VOUS SOUHAITEZ QUIL SE RETROUVE APRES AVOIR REPONDU AU FORMULAIRE");

?>



copier/coller ce code dans bloc note modifier les champs en majuscule,
et enregistrez le tout sous "traitement.php" par exemple , n'oubliez pas le .php,
mais surtout lorsque vous mettrez "enregistrez sous" dans bloc note,
lorsque vous devez mettre dans "nom du fichier" exemple.php par exemple,
en dessous il vous faut mettre dans "type" "tous les fichiers" et non pas "fichier texte".
J'espère vous aurez compris.

puis c'est tout faite hebergé le tout.
1
Bonjour,
Comme plusieurs, je reçois bien le mail mais le redirect ne fonctionne pas.
J'ai le message suivant:
Warning: Cannot modify header information - headers already sent by (output started at /home/ophos20394/domains/elisabethamblard.com/public_html/Contact/formmail.php:6) in /home/ophos20394/domains/elisabethamblard.com/public_html/Contact/formmail.php on line 13

alors que je ne redirige pas vers "Contact/formmail.php" mais vers une autre page html dans le dossier Contact.
Merci de votre aide
1
alors je ne sais pas :s

Je testerais le code pour essayer de comprendre ce qui ne vas pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oué =)
0
c'est bon mon problème est résolu, merci à tous pur votre aide !
0
Bonjour,

Je suis intéressée de savoir ce que tu as modifié pour que ça marche. J'ai à priori le même problème que toi.

Je t'en remercie.
0
Salut,
sa serait possible de voir ton code ?
0
Tiboun_73 Messages postés 2 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 12 août 2009
12 août 2009 à 10:56
Alors en fait, j'ai résolu mon problème en allant modifier le php.ini et l'envoi de mail fonctionne.

Par contre, je me retrouve face à un autre problème :

Avant que je n'utilise l'envoi de mail, j'avais la page contact.php avec :
<form method="post" action="contact_ok.php">


et entre autres...
<fieldset>
   <legend>Vos coordonnées</legend> <!--Titre du groupe (fieldset)-->
   <label for="nom">Nom : </label><input type="text" name="nom" id="nom" />  
   <label for="prenom">Prénom :  </label><input type="text" name="prenom" id="prenom" /><br />
   <br />
   <label for="num_tel">Téléphone : </label><input type="text" name="num_tel" id="num_tel" />  
   <label for="ad_mail">Adresse email : </label><input type="text" name="ad_mail" id="ad_mail" /><br /><br />
   <label for="mode_contact">Comment souhaitez vous être contacté(e)?</label><br />
   <select name="mode_contact" id="mode_contact">
		<option value="telephone">Par téléphone</option>
		<option value="mail">Par mail</option>
   </select>
   
   </fieldset>


et dans contact_ok.php, j'avais ceci qui fonctionnait très bien :
<h1>Message expédié !</h1>
<br />
<p>
<?php
if ($heure <18) 
{echo "Bonjour ";
}
else
{echo "Bonsoir ";}
?>

<?php echo $_POST['prenom'] ?> <?php echo $_POST['nom']; ?>, <br /><br />
Votre message a bien été envoyé (<?php echo "le $jour/$mois/$annee, à $heure:$minute"?>)  à Jean-Marie C. <br /><br />Il répondra rapidement à votre demande en vous contactant par <?php echo $_POST ['mode_contact']; ?>

<?php
$mode_contact = $_POST ['mode_contact'];
$num_tel = $_POST ['num_tel'];
$ad_mail = $_POST ['ad_mail'];


if ( $mode_contact == "telephone")
{
echo "au $num_tel." ;
}
else
{
echo "à $ad_mail.";
}
?>


Cela donnait selon le cas :

Bonjour Luc TARTEMPION,
Votre message a bien été envoyé (le 12/08/2009, à 10:32) à Jean-Marie C.

Il répondra rapidement à votre demande en vous contactant par telephone au 00 00 00 00 00 .
(ou)
Il répondra rapidement à votre demande en vous contactant par mail à tartempion@gmail.com .

Maintenant, je rajoute l'envoi de mail :
Je reprends ma page contact.php en modifiant :
<form method="post" action="formmail.php">


Je crée le fichier formmail.php :
<?php
$TO = "mon_adresse@mon_hebergeur.net";

$h  = "From: " . $TO;

$message = "";

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

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

Header("Location: http://...contact_ok.php");

?>



Résultat :
L'envoi de mail se passe très bien.
Mais sur la page contact_ok.php, je me retrouve avec le résultat suivant :

"Bonjour ,

Votre message a bien été envoyé (le 12/08/2009, à 10:50) à Jean-Marie C.
Il répondra rapidement à votre demande en vous contactant par à. "

Les variables 'nom', 'prénom' et 'mode contact' ne sont plus reprises...


Je vous l'accorde, ce n'est pas du plus important, mais j'aimais bien jouer avec les variables....
Quelqu'un peut-il m'aider ?

Je vous en remercie.
0
euh ... c'est possible de faire sa avec des session .. mais perso je bloque un peu, franchement la je ne peut pas t'aider :s désolé
0
Tiboun_73 Messages postés 2 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 12 août 2009
12 août 2009 à 12:41
Merci de ton coup d'œil quand même.

Quelqu'un d'autre à une idée svp ?
0
Lit le début du sujet.
J'ai donner un script pour recevoir les donnée d'un formulaire vers une boite mail.
Aprés, tu doit juste adapter le formulaire pour mettre les info qui t'intéresse.
0
Merci, voila le form.php (fait a partir de dreamweaver8)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<?php
$TO = "mon mail@terra.com.br";

$h = "From: " . $TO;

$subject = "mail de formulaire";

$message = "";

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

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

Header("Location: http://www.mon site/index.html");

?>
<body>
</body>
</html>

Le formulaire html est enorme, car il y a de nombreux script de calcul entre des donner entré par les visteur et des donner fixe de valeur, si tu veux je peux poster le lien de la page ici, pour recuperer les codes
0
up
0
Je n'ai pas eu le temps de m'en occuper, je voit sa ce week end ( je veut bien la page html si possible )
0
Merci, je vais faire un test aussi avec ces codes.

voila le lien de la page html:
http://www.luniversdechocolat.com.br/loja_virtual3.html

Notez que je suis au Brésil, pour ça le .com.br , mais pour les codes et script, ça doit pas etre diferent
Encore merci !
0
up
0
Hello...

Je viens de tester egalement, et j'ai le même problème que toi, le mail est vide...

Comme s'il ne récuperait pas les données de l'autre page... je ne sais pas trop pourquoi ;)

J'ai bien fait la page formmail.

J'ai bien fait mon formulaire.

et l'envoie de mail fonctionne, mais rien dans le corps du message, rien dans le titre .

je vous colle les 2 codes :

voila ma page incluant le formulaire :


<div align=center>
<form method=POST action=site/formail.php >
<input type=hidden name=subject value=formmail>
<table>
<tr><td>Votre Nom:</td>
<td><input type=text name=realname size=30></td></tr>
<tr><td>Votre Email:</td>
<td><input type=text name=email size=30></td></tr>
<tr><td>Sujet:</td>
<td><input type=text name=title size=30></td></tr>
<tr><td colspan=2>Commentaires:<br>
<textarea cols="44" rows="6" name="commentaire" wrap="soft"></textarea><br><br>
<input type="submit" value="Valider">
<input type="reset" value="Annuler">


et voila ma page formail.php :

<?php
$TO = "xxxxxxxxxxxxxxxxx";

$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/Nouveautest/index.php?page=remerciement");

?>


Merci beaucoup ;)
0
Bonjour,

J'ai pratiquement le meme code que toi sauf que moi je ne recoit pas de mail. J'ai vu que toi ca marche...comment tu as fait?

Merci^^
Bes
0
geo9222 Messages postés 1 Date d'inscription jeudi 18 août 2016 Statut Membre Dernière intervention 18 août 2016 > Besdu06
18 août 2016 à 23:44
Salut ! Je sais que les posts sont assez anciens, mais si ça peut aider... Après avoir passé un bon nombre d'heures à comprendre pourquoi mon mail était vide à la réception, j'ai enfin trouvé une solution, donc je partage.

Le code PHP fonctionne bien, mais chez moi, j'ai du revoir la ligne
while (list($key, $val) = each($HTTP_POST_VARS)) { 
$message .= "$key : $val\n";
}


J'ai juste gardé la fonction POST, ce qui donne
while (list($key, $val) = each($_POST)) {
$message .= "$key : $val\n";
}


Voilà, je reçois donc (enfin) toutes les données de mon formulaire. Merci beaucoup pour ce code :)
0
Salut je ne comprend pas pourquoi tu as mis :

action="site/formail.php" 


Normalement tu ne dois que mettre :

action="formail.php"


peut être le fait qu'il y es l'adresse du site avant peut te causé un petit souci,
tu devrais quand même essayer, et sa raccourcie ton code sa seras plus propre
et plus facile à corriger en cas d'erreur.
si jamais tu n'y arrive toujours pas,
je peux t'envoyer un email sur ta messagerie et en pièce jointe :

Le formulaire html + page php

Et renseigne toi bien que ton hébergeur prend bien en compte le php,
on ne sait jamais.
Et renomme bien ta page php en "formail.php" si dans le formulaire html il es écrit ainsi,
si tu utilise un hébergeur gratuit, prend lycos multimania avec moi sa marchais quand je l'utilisais.
Amicalement

Mais en tout cas j'espère t'avoir aidé un peu.
N'hésites pas a me demandé les codes par email si tu as n'a vraiment besoin.
0
Bonjour a tous,

Mon probleme est que le corps du message que je recoit est vide
Ma question est :

pour le fichier formail.php faut il mettre en haut de page :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

???

Par avance merci de vos réponses
0
Je suis en retard pour la réponse :)

Mais sa peut servir à quelqu'un d'autre, il n'est pas nécessaire de mettre
le bout de code DOCTYPE HTML PUBLIC dans un fichier PHP.

Du moins je n'ai jamais eu à le mettre et je n'ai rencontré aucun problème.
0
Anonime34500
12 janv. 2010 à 03:14
Bonjour je vous expose mon problème,
J'avais un formulaire avec bouton d'envoie qui fonctionnais bien jusqu'à
aujourd'hui. Aujourd'hui tout fonctionne sauf que je reçois dans l'email rien du tout.
Mais vraiment rien, alors que avant tout marchez je n'ai rien modifier.
Je suis héberger en gratuit faut le dire chez multimania lycos.
Est-ce de l'avoir trop utilisez ? le quota est dépasser ?
Je n'ai pas de message d'erreur ou autres, de plus j'ai essayer d'ouvrir un autre compte
mais toujours le même problème. j'ai éssayer ensuite différent script html/php mais rien a faire.

Quelqu'un a t'il le même problème ? si oui, comment le résoudre. Merci beaucoup par avance de vos réponses
si j'en reçois.:)
0
anonime34500
29 janv. 2010 à 19:41
Bonjour,
j'ai résolu le problème,
enfet si vous utilisez un hébergeur gratuit sa bloque au bout d'un moment comme si vous utilisez un hébergeur payant mais pas très cher genre contre 1 allopass ..
Au bout d'un moment sa bloque même si vous vous réinscrivait (sur les hébergeur gratuit )

la j'ai pris un abonnement chez second hébergement et sa fonctionne.
Donc si vous ne recevez rien prenez un hébergeur payant.
0
bobenausaure Messages postés 226 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 27 janvier 2013 16
21 avril 2010 à 16:32
Bonjour.
J'utilise le code affiché au début de ce message-forum.
Rappel :
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}

Sauf que dans mon formulaire, j'ai des cases à cocher. Lorsque je n'ai qu'une case de cochée, pas de problèmes, mais lorsque plusieurs cases sont cochées, seul la dernière est affichée dans le mail. Comment faire pour que tout soit affiché ?
Merci d'avance.
0
Bonjour

Tout d'abord un grand merci à tous les intervenants de ce post ! je suis en train de créer mon site, et grâce à vous j'ai pu faire fonctionner un envoi de formulaire via la fonction mail() en php ... et ce n'était pas gagné, je suis ignare en matière de site Web, et les seuls langages que je connaissent sont le C et le VisualBasic ; je me suis mis à DreamWeaver il y a seulement 15 jours et mon site commence à prendre forme.

J'aurais toutefois une petite question ; dans le mail que je reçoit, tous les caractères qui ne font pas partie des 256 codes ASCII de base (autrement dit les é à è ...) sont remplacés par des caractères bizarres qui rendent la lecture difficile. comment peut on remédier à ce problème ?

exemple: le mot "caractères" écris dans le formulaire m'est retourné comme ça dans le mail: caractères .... pas très lisible n'est ce pas.

merci pour vos réponses
++
David
0