Probleme de code sur formulaire mail !

smoon

Expert
Salut à tous,

Voila mon probleme, j'ai fais un code pour soumettre un formulaire par mail.
Mon formulaire HTML se dispose ainsi :

[cpp]
<FORM METHOD="POST" ACTION="formmail.php">
<INPUT TYPE="hidden" NAME="subject" VALUE="formmail">
<P>Indiquez les coordonn&eacute;es suivantes :</P>
<BLOCKQUOTE>
<TABLE border="0">
<TR>
<TD ALIGN="right">
<EM>Pr&eacute;nom</EM>
</TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Prenom" SIZE=25 >
</TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Nom</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Nom" SIZE=25 ></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Titre</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Titre" SIZE=35 ></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Adresse</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Adresse" SIZE=35 ></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Adresse (suite)</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Adresse2" SIZE=35 ></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Ville</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Ville" SIZE=35></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Code postal</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_CodePostal" SIZE=12 MAXLENGTH=12></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Pays</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Pays" SIZE=25></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>T&eacute;l&eacute;phone bureau</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_TelephoneBureau" SIZE=25 MAXLENGTH=25></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>T&eacute;l&eacute;phone personnel</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_TelephoneDomicile" SIZE=25 MAXLENGTH=25></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>Courrier &eacute;lectronique</EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_Email" SIZE=25></TD>
</TR>
<TR>
<TD ALIGN="right">
<EM>URL </EM></TD>
<TD>
<INPUT TYPE=TEXT NAME="Contact_URL " value="http://" SIZE=25 MAXLENGTH=25></TD>
</TR>
<TR>
<TD>
<EM>Publication de mon nom </EM>
</TD>
<FORM>
<TD align="right">
<font color="red">Oui, je l'accepte </font><INPUT TYPE=RADIO NAME="Contact_accept " VALUE="oui" checked></TD>
</TR>
<TR>
<TD>&nbsp;</TD>
<TD align="right">
<font color="red">Non, je ne l'accepte pas </font><INPUT TYPE=RADIO NAME="Contact_accept " VALUE="non"></TD>
</FORM>
</TR>
<TR>
<TD align="right">
<INPUT NAME="valider" TYPE=SUBMIT VALUE="Envoyer"></TD>
<TD align="right">
<INPUT NAME="annuler" TYPE=RESET VALUE="Effacer le contenu"></TD>
</TR>
</TABLE>
</BLOCKQUOTE>
</FORM>
[/cpp]
Voici comment se compose mon formmail.php (entre balise php cela va de soit!) :

[cpp]
$TO = "toto@toto.tom";
$sujet = "Réponse au formulaire d'inscription - news IDI";
$qui_nom = $_POST['Contact_Prenom'];
$qui_prenom = $_POST['Contact_Nom'];
$titre = $_POST['Contact_Titre'];
$adresse1 = $_POST['Contact_Adresse'];
$adresse2 = $_POST['Contact_Adresse2'];
$ville = $_POST['Contact_Ville'];
$codepostal = $_POST['Contact_CodePostal'];
$pays = $_POST['Contact_Pays'];
$telbur = $_POST['Contact_TelephoneBureau'];
$teldom = $_POST['Contact_TelephoneDomicile'];
$siteurl = $_POST['Contact_URL'];
$acceptpubli = $_POST['Contact_accept'];
$refuspubli = $_POST['Contact_accept'];
$quimail = "From : " . $_POST['Contact_Email'] . $TO;

if (mail($TO, $sujet, $qui_nom, $qui_prenom, $titre, $adresse1, $adresse2, $ville, $codepostal, $pays, $telbur, $teldom, $siteurl, $acceptpubli, $refuspubli, $quimail))

header("Location : index.html");

else echo "erreur";
[/cpp]

Enfin voici l'erreur soumise par mon navigateur :

[cpp]Warning: mail() [function.mail]: Nombre de parametres incorrects in /mnt/106/sdb/f/5/m.mahlaoui/idi/formmail.php on line 20[/cpp]

Merci aux âmes sensibles à mon probleme de bien vouloir m'aider tant que faure se peut.
 

dartyduck

Grand Meuble Suprême
Et tu le trouve clairement lisible ton code posté ainsi ? mets le dans la balise CODE C/C++
 

smoon

Expert

Salut à toi aussi ! :heink: ;)
 

dartyduck

Grand Meuble Suprême
merci. Qui est ton hébergeur ? Si c'est free, Free impose que la page qui est appelée à la validation du formulaire s'appelle result.html et on ne peut pas faire autrement.
 

marsien

Grand Maître
Dartyduck> Absoument pas ! la page result.html est imposé seulement si tu passes par le script perl fourni par Free. Mais ce n'est pas du tout obligatoire ! Et dans le cas présent, le code php est tout à fait général, même chez Free ;)

smoon> Va lire la doc sur le fonction mail() :
Tu verras qu'il faut concaténer tes variables qui doivent constituer le corps du message pour n'en former plus qu'une...
 

smoon

Expert


Effectivement je suis chez free.
Même si cette page contient du php je dois la nommer en html ?
 

smoon

Expert


Salut,
je l'ai fait la premiere fois mais il m'a sorti une erreur ... que je n'ai pas retenu, alors que j'avais concaténé le corps du message !? ! :pfff:
 

marsien

Grand Maître
Eh ben, c'est pourtant comme ça que ça marche. Donc à refaire et mets l'erreur ici si elle revient :)
 

smoon

Expert


Ceci est le mail que je reçois lorsque je soumets mon formulaire :
(Les adresses mails ont été modifiées, ne pas dire que ça ne peut marcher avec des adresses mail pareil !!!)

[cpp]
This is the mail system at host perso1.free.fr.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<toto@toto.tom>: host mx3.to.tom[65.54.245.72] said: 550 Your
e-mail was rejected for policy reasons on this gateway. Reasons for
rejection may be related to content such as obscene language, graphics, or
spam-like characteristics (or) other reputation problems. For sender
troubleshooting information, please go to http://postmaster.msn.tom.
Please note: if you are an end-user please contact your E-mail/Internet
Service Provider for assistance. (in reply to MAIL FROM command)
[/cpp]

Voici mon code modifié, comme gentillement demandé :D :
(Les retours à la ligne ne sont là que pour faire de la place !)

[cpp]
<?php

$TO = "toto@toto.tom";
$sujet = "Réponse au formulaire d'inscription - news IDI";
$corps = $_POST['Contact_Prenom']."\n".$_POST['Contact_Nom']."\n".$_POST['Contact_Titre']."\n".
$_POST['Contact_Adresse']."\n".$_POST['Contact_Adresse2']."\n".$_POST['Contact_Ville']."\n".
$_POST['Contact_CodePostal']."\n".$_POST['Contact_Pays']."\n".
$_POST['Contact_TelephoneBureau']."\n".$_POST['Contact_TelephoneDomicile']."\n".
$_POST['Contact_URL']."\n".$_POST['Contact_refus']."\n".$_POST['Contact_accept'];

if (mail($TO, $sujet, $corps))

header("Location : index.html");

else echo "erreur";
?>
[/cpp]
 

marsien

Grand Maître
Pour ta variable $corps, essaie plutôt :
[cpp]$corps = '';
foreach($_POST as $key=>$value)
{
$value = stripslashes($value);
$corps .= "$key : $value\n";
}[/cpp]
 

smoon

Expert


Voici le code apres modif :

[cpp]
<?php

$sujet = "Réponse au formulaire d'inscription - news IDI";
$corps = $_POST["Contact_Prenom"]."\n".$_POST["Contact_Nom"]."\n".$_POST["Contact_Titre"]
."\n".$_POST["Contact_Adresse"]."\n".$_POST["Contact_Adresse2"]."\n".$_POST["Contact_Ville"]
."\n".$_POST["Contact_CodePostal"]."\n".$_POST["Contact_Pays"]."\n".$_POST["Contact_TelephoneBureau"]
."\n".$_POST["Contact_TelephoneDomicile"]."\n".$_POST["Contact_URL"]."\n".$_POST["Contact_accept"];
foreach($_POST as $key=>$value)
{
$value = stripslashes($value);
$corps .= "$key : $value\n <br>";
}





$headers ='From: '.$_POST["Contact_Email"]."\n";
$headers .='Reply-To: '.$_POST["Contact_Email"]."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

$message ="\n".'<html>'."\n".'<head>'."\n".'<title>'."\n".$sujet."\n".'</title>'
."\n".'</head>'."\n".'<body bgcolor="blue">'."\n".'<font color="yellow" face="Comic Sans Ms">'."\n".'<H1>'."\n".'<br>'.$corps."\n".'</H1>'."\n".'</font>'."\n".'</body>'."\n".'</html>';

if(mail("toto@to.tom", $sujet, $message, $headers))
{
header("Location : index.html");
}
else
{
echo 'Le message n\'a pu être envoyé, désolé !!!';
}
?>
[/cpp]

Et voici ce que ca donne en clair :


[cpp]
Le message a été envoyé<br>
<html>
<head>
<title>
Réponse au formulaire d'inscription - news IDI
</title>
</head>
<body bgcolor="blue">
<font color="yellow" face="Comic Sans Ms">
<H1>
<br>toto
titi
titi
ti
tititti
ti
ti
ti
tti
ttti

subject : formmail
<br>Contact_Prenom : toto
<br>Contact_Nom : titi
<br>Contact_Titre : titi
<br>Contact_Adresse : ti
<br>Contact_Adresse2 : tititti
<br>Contact_Ville : ti
<br>Contact_CodePostal : ti
<br>Contact_Pays : ti
<br>Contact_TelephoneBureau : tti
<br>Contact_TelephoneDomicile : ttti
<br>Contact_Email : toto@to.to
<br>Contact_URL_ :
<br>Contact_accept_ : oui
<br>valider : Envoyer
<br>

</H1>
</font>
</body>
</html>
[/cpp]

What else ?
 

marsien

Grand Maître
Il faut que tu vires ce qu'il y a dans ta variable $corps !

Comme indiqué précédemment tu remplaces $corps = 'toutes tes variables que tu as maintenant' par $corps = '' ; ça sert juste à l'initialiser ;)

Mon code permet de faire la même chose que ta concaténation manuelle, mais de façon auto, en associant en plus le nom de ta variable postée à sa valeur, histoire de mieux t'y retrouver dans ton mail :)

Au final, ça donne ça :
Code:
<?php
$sujet = "Réponse au formulaire d'inscription - news IDI";
$corps = '';
    foreach($_POST as $key=>$value)
    {
        $value = stripslashes($value);
        $corps .= "$key : $value\n <br>";
    }
     $headers ='From: '.$_POST["Contact_Email"]."\n";
     $headers .='Reply-To: '.$_POST["Contact_Email"]."\n";
     $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';
     $message ="\n".'<html>'."\n".'<head>'."\n".'<title>'."\n".$sujet."\n".'</title>'
."\n".'</head>'."\n".'<body bgcolor="blue">'."\n".'<font color="yellow" face="Comic Sans Ms">'."\n".'<H1>'."\n".'<br>'.$corps."\n".'</H1>'."\n".'</font>'."\n".'</body>'."\n".'</html>';
     if(mail("toto@to.tom", $sujet, $message, $headers))
     {
          header("Location : index.html" );
     }
     else
     {
          echo 'Le message n\'a pu être envoyé, désolé !!!';
     }
?>
 

smoon

Expert
Voici ce que me renvoi le serveur mail censé recevoir mon mail !

[cpp]
This is the mail system at host perso1.free.fr.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<to@toto.tom>: host mx1.hotmail.com[IP] said: 550 Your
e-mail was rejected for policy reasons on this gateway. Reasons for
rejection may be related to content such as obscene language, graphics, or
spam-like characteristics (or) other reputation problems. For sender
troubleshooting information, please go to http://postmaster.msn.com.
Please note: if you are an end-user please contact your E-mail/Internet
Service Provider for assistance. (in reply to MAIL FROM command)[/cpp]
 

KangOl

Grand Maître
et si tu envoyait le mail a quelqu'un qui existait ?
to@toto.tom c'est pas une adresse valide :o
 

marsien

Grand Maître
Me dis pas que tu faisais tes tests avec ce mail bidon :/ Je croyais que c'était juste pour le code sur le forum...
 

smoon

Expert
et si tu envoyait le mail a quelqu'un qui existait ?
to@toto.tom c'est pas une adresse valide :o
J'ai deja precisé que c'etait une adresse bidon pour ne pas me faire spammer.
 

marsien

Grand Maître
Spammer par quoi ? Le serveur de Free ?

Tu peux mettre ta propre adresse, ou une adresse créé sur un webmail pour l'occasion...
 

smoon

Expert


Je ne laiss pas mon adresse sur ce forum, C'EST POUR CA que je ne mets pas mon adresse ou celle à atteindre par le formulaire.
C'est aussi simple que ça !!!!!!!!!
 

marsien

Grand Maître
Te fout pas de nous : le message d'erreur de Free est clair

to@toto.tom>: host mx1.hotmail.com[IP]...

Tu testes avec cet email pourri, c'est juste pour ça que ça marche pas... Essaie avec un vrai mail, tu verras que ce sera bien mieux !!!!!!!

Et ça n'a rien à voir avec l'email que tu laisses ici :o
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 054
Membres
1 586 393
Dernier membre
mathhh28
Partager cette page
Haut