Page 1 sur 1

Formulaire et mail de réponse

Posté : 12 avr. 2011, 08:03
par Max1970
Bonjour à tous,

Je suis novice en PHP et j'ai un soucis avec un formulaire : il marche parfaitement sauf que quand je reçois un mail et que je clique sur "Répondre", le mail de l'expéditeur ne s'affiche pas dans le champs "A:". Voici le script en question et merci d’essayer de me dépanner :

AVANT HTML :

<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
if(isset($_POST['submit'])){
$erreur="";
// Nettoyage des entrées
while(list($var,$val)=each($_POST)){
if(!is_array($val)){
$$var=strip_tags($val);
}else{
while(list($arvar,$arval)=each($val)){
$$var[$arvar]=strip_tags($arval);
}
}
}
// Formatage des entrées
$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
// Verification des champs
if($erreur==""){
// Création du message
$titre="Message de votre site";
$tete="From:[email protected]\n";
$corps.="E-mail : ".$f_1."\n";
$corps.="Message : ".$f_2."\n";
if(mail("[email protected]", $titre, stripslashes($corps), $tete)){
$ok_mail="true";
}else{
$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
}
}
}
?>

APRES BODY :

<? if($ok_mail=="true"){ ?>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr>
</table>
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<? if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?>
<tr><td colspan='2'><span class='txterror'>Les champs marqué d'un * sont obligatoires</span></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>E-mail :</span></td><td><input type='text' style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?echo stripslashes($f_1);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Message :</span></td><td><input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<? } ?>

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 08:05
par xTG
Essayes à tout hasard avec \r\n à la place de \n à la fin de $tete.

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 08:51
par Max1970
Ca ne marche pas.

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 09:54
par Mazarini
Bonjour,

Sur les clients mail, il y a la possibilité de voir le source du mail et/ou les entêtes. Compare entre le mail que tu envoies et un autre mail pour voir les différences aux alentours de la ligne "from:"

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 11:13
par Max1970
Y a pas de différence. Je pense que le problème vient du fait que le champs mail est considéré comme un champs texte et peut-être qu'en modifiant la fonction de ce champs ça résoudrait le problème. En même j'ai un doute sur $tete="From:[email protected]\n"; car si on change après "From:" le mail ne part pas.

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 11:20
par Mazarini
Bonjour,

Il y a forcement une différence puisque ton client mail ne l'interprète pas de la même facon.

Pour ce qui est de la valeur du champ From, il est possible que ton hébergeur filtre pour que le mail soit forcement issue de ton domaine afin de faciliter les recherches en cas de spam. Eventuellement tu peux peux essayer d'ajouter un "replyto" (nom à vérifier)

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 13:00
par misterflo
Salut,
essaye de rajouter un Reply-to: dans le $tete
// Création du message
$titre="Message de votre site";
$tete = "From: [email protected]\n";
$tete .= "Reply-to: [email protected]\n";
$corps.="E-mail : ".$f_1."\n";
$corps.="Message : ".$f_2."\n";

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 15:14
par Max1970
Ça ne marche pas non plus mais par contre, si je remplace l'adresse mail par une autre dans ----- $tete .= "Reply-to: [email protected]\n"; ----- genre ----- $tete .= "Reply-to: [email protected]\n"; ----- j'ai bien [email protected] dans la zone A: lorsque je fais Répondre. Donc, peut-être qu'en faisant un lien entre :

<tr><td align='right' width='30%'><span class='txtform'>E-mail :</span></td><td><input type='text' style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?echo stripslashes($f_1);?>' size='24' border='0'></td></tr>

et

$tete .= "Reply-to: [email protected]\n";

...ça devrait marcher ? Merci en tous cas pour votre aide !

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 15:54
par Mazarini
Bonjour,

Par hasard, dans $tete="From:[email protected]\n"; il me manquerai pas un blanc derrière le from:
En effet, tu indiques maintenant que le $tete .= "Reply-to: [email protected]\n"; fonctionne avec un blac dans après le Reply-to:

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 16:01
par misterflo
Logiquement ca ne pose pas de problème qu'il y ai un espace ou non, c'est juste pour une meilleur lecture.

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 18:22
par Max1970
Effectivement l'espace ne change rien.

Re: Formulaire et mail de réponse

Posté : 12 avr. 2011, 20:41
par Max1970
Je viens de trouver et c'est bien $tete .= "Reply-to: [email protected]\n"; qu'il fallait mettre mais avec $f_1 à la place de Testmonsite.fr, ce qui donne :

$tete="Reply-to:$f_1\n";

On retrouve bien $f_1 dans la ligne correspondant à la saisi de l'adresse mail par le visiteur :

<tr><td align='right' width='30%'><span class='txtform'>E-mail :</span></td><td><input type='text' style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?echo stripslashes($f_1);?>' size='24' border='0'></td></tr>

Je supposais que ces deux lignes devaient communiquer et donc, par tatonnement, j'y suis arrivé. Merci à tous pour votre aide !