Tout d'abord bonjour à tous. Tout nouveau sur le forum, je n'ai pas voulu poster avant d'etre à court d'idées mais là j'avoue, je suis un peu paumé.

Voila mon probleme : j'ai mis en place un formulaire sur mon site pour lequel je ne reçois aucun message.

Voici le code PHP de ma page :

<?php
$email_dest = "mon_adresse@mail.fr";
if ($_POST['envoi']) {
$headers ="MIME-Version: 1.0 \n";
$headers .="From: moi<mon _adresse@mail.fr>\n";
$headers .="Content-Type: text/html; charset=iso-8859-1 \n";
$subject = "Réponse à votre demande de renseignements";
$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";
for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}
if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}
if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}
$fin = "</body></html>";
$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
}
else 
{
header("Location:../formulaire/merci.htm");
exit();
}
}
?>

Voici le formulaire :

<form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
  <div align="center"></div>
<p align="center">
<p class="formulaire"><table width="600" border="0" align="center" cellpadding="3" cellspacing="0">
<p align="center">
<tr bgcolor="#FFCC00">
      <td><font face="Verdana" size="2">Nom<font color="#FF0000">*</font></font></td>
      <td><input name="champ1" type="text"></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td><font face="Verdana" size="2">Prénom<font color="#FF0000">*</font></font></td>
      <td><input name="champ2" type="text"></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td><font face="Verdana" size="2">Adresse</font></td>
      <td><input name="champ3" type="text"></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td><font face="Verdana" size="2">Code postal</font></td>
      <td><input name="champ4" type="text"></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td><font face="Verdana" size="2">Téléphone</font></td>
      <td><input name="champ5" type="text"></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td><font face="Verdana" size="2">Objet du message<font color="#FF0000">*</font></font></td>
      <td><input name="champ6" type="text"></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td width><font face="Verdana" size="2">E-mail<font color="#FF0000">*</font></font></td>
      <td width><input name="zone_email" type="text"></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td valign="top"><font face="Verdana" size="2">Message<font color="#FF0000">*</font></font></td>
      <td><textarea name="zone_texte" cols="50" rows="10"></textarea></td>
    </tr>
	
	<tr bgcolor="#FFCC00">
      <td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="6">
        <input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_champ1" type="hidden" value="Nom"><input name="titre_champ2" type="hidden" value="Prénom"><input name="titre_champ3" type="hidden" value="Adresse"><input name="titre_champ4" type="hidden" value="Code postal"><input name="titre_champ5" type="hidden" value="Téléphone"><input name="titre_champ6" type="hidden" value="Objet du message"><input name="titre_email" type="hidden" value="E-mail"><input name="titre_zone" type="hidden" value="Message"></td>
      <td><div align="center">
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
        </div></td>
    </tr>
  </table>
  <div align="center"><em><font color="#FF0000" size="2"><strong>*Champs
           obligatoires</strong></font></em></div>
</form>


Si quelqu'un a une idée, merci d'avance.
je crois que quand tu renseigne les headers From, il faut mettre un email.
D'autre part je suis pas sur que (@!mail()) soit bon comme syntaxe,
juste !mail suffit il n'y a pas de message d'erreur normalement donc le @ est inutile.
En esperant avoir pu t'aider
Salut mynick Smiley cligne ,

Comme bprod j'ai un petit doute sur la syntaxe From : moi<monemail@tagada.fr>. J'aurais mis pour être sûr From : monemail@tagada.fr.

Sinon, d'où vient la variable $_POST['envoi'] ?

Si ça peut t'aider j'avais mis un exemple de formulaire à cette adresse pour répondre à un post.

A+ Smiley smile


* Edit: OK, j'ai vu d'où venait $_POST['envoi']. Par contre, ce serait plus "propre" de tester son existence
if (isset($_POST['envoi'])) {
Et pour la variable $partie_champs_texte ce serait plus "mieux" de l'initialiser avant de l'utiliser
$partie_champs_texte = '';
Si je puis-je me permettre Smiley rolleyes

* Edit 2: Par curiosité j'ai mis ton code en ligne (en ne changeant que l'adresse mail) et ça marche... Alors soit tu testes en local et ton smtp n'est pas bien configuré (ce qui est mon cas), soit ton hébergeur sécurise l'envoi des mails (il me semble avoir lu que certains obligeaient la présence dans le header des Reply-to: et Return-Path: Smiley ohwell )
Modifié par Heyoan (01 Jun 2007 - 12:57)
Merci beaucoup pour votre aide. J'ai effectué les modifications que vous m'avez suggerées. Malheureusement ça ne marche pas encore. C'est peut-etre une impression mais j'enrage car je ne pense pas etre tres loin de la solution.

Je vous remet le code apres correction :


<?php
$email_dest = "monemail@turlututu.fr";
if (isset($_POST['envoi'])) {
$headers ="MIME-Version: 1.0 \n";
$headers ="From:monemail@turlututu.fr\n";
$headers ="Content-Type: text/html; charset=iso-8859-1 \n";
$subject = "Réponse à votre demande de renseignements";
$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";
for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte = '';"<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}
if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}
if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}
$fin = "</body></html>";
$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;
if (!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} else { 
header("Location:../formulaire/merci.htm");
exit();
}
}
?>
Re'

je te remets mon *Edit 2: du post précédent car on s'est croisés :

Heyoan a écrit :
Par curiosité j'ai mis ton code en ligne (en ne changeant que l'adresse mail) et ça marche... Alors soit tu testes en local et ton smtp n'est pas bien configuré (ce qui est mon cas), soit ton hébergeur sécurise l'envoi des mails (il me semble avoir lu que certains obligeaient la présence dans le header des Reply-to: et Return-Path: Smiley ohwell )

Modifié par Heyoan (01 Jun 2007 - 12:59)
Heyoan a écrit :

Par curiosité j'ai mis ton code en ligne (en ne changeant que l'adresse mail) et ça marche...

Je n'aurais pas osé le demander mais merci. C'est deja rassurant que ça marche.
Heyoan a écrit :

Alors soit tu testes en local et ton smtp n'est pas bien configuré (ce qui est mon cas)

Je teste en ligne.
Heyoan a écrit :

soit ton hébergeur sécurise l'envoi des mails (il me semble avoir lu que certains obligeaient la présence dans le header des Reply-to: et Return-Path: ohwell )


Mon hebergeur est (j'ai le droit de le citer ici ?) DRI. La fonction mail() est activée.

DRI a écrit :
Cependant, pour pouvoir envoyer des e-mails vers l'Internet, le champ "émetteur" ("from") devra parfaitement être renseigné avec une adresse e-mail hébergée sur nos machines.
C'est ce que j'ai fait.

PS: soit je ne sais pas taper une adresse correctement et là, malheureusement, tu ne pourras rien pour moi... Smiley biggrin
Bon ben la je sèches Smiley hum

A part tester une fois avec
$headers .="From: moi<mon_adresse@mail.fr> \n";
$headers .="Reply-to: moi<mon_adresse@mail.fr> \n";
$headers .="Return-Path: moi<mon_adresse@mail.fr> \n";

et éventuellement une fois avec
$headers .="From: mon_adresse@mail.fr \n";
$headers .="Reply-to: mon_adresse@mail.fr \n";
$headers .="Return-Path: mon_adresse@mail.fr \n";

je ne vois plus que les forums de DRI pour te dépanner Smiley rolleyes

A+
Merci quand meme.
Je n'ai aucun message d'erreur apres envoi du formulaire. Je me retrouve juste sur la page d'accueil (meme pas de passage par la page de remerciement) comme si je n'avais rien envoyé. Un detail important a du m'echapper..
Salut,

Ha les fonctions d'envois d'email, enfin ha exclamatif pas de joie....

j'ai regardé en travers ton code j'ai pas cru voir la partie où tu defini ton smtp.

beaucoup de mes pb de ce genre ont fini par se resoudre autour de ce point.
CPascal a écrit :
Salut,

Ha les fonctions d'envois d'email, enfin ha exclamatif pas de joie....

j'ai regardé en travers ton code j'ai pas cru voir la partie où tu defini ton smtp.

beaucoup de mes pb de ce genre ont fini par se resoudre autour de ce point.

Un petit coup de main ne serait pas de refus parce que je suis loin d'etre un specialiste en configuration de smtp.
je lis que ton site est en ligne c'est vrai que ton hebergeur devrait avoir mis les bonnes valeurs... quoique j'ai déja vu le contraire.

verifie les valeurs de sendmail_from et SMTP dans ton php.ini. avec phpinfo() et au besoin defini les avec ini_set( string chaine, string valeur).

le sendmail_from doit retourné l'adresse de l'expediteur. sinon bcp de serveur smtp vont te court-circuité. et la valeur SMTP doit definir un serveur auquel tu as accés
Modifié par CPascal (01 Jun 2007 - 16:29)
CPascal a écrit :
je lis que ton site est en ligne c'est vrai que ton hebergeur devrait avoir mis les bonnes valeurs... quoique j'ai déja vu le contraire.

verifie les valeurs de sendmail_from et SMTP dans ton php.ini. avec phpinfo() et au besoin defini les avec ini_set( string chaine, string valeur).

le sendmail_from doit retourné l'adresse de l'expediteur. sinon bcp de serveur smtp vont te court-circuité. et la valeur SMTP doit definir un serveur auquel tu as accés


Voila ce que ça donne :

sendmail_from no value
SMTP localhost

Désolé, j'ai l'impression d'etre un boulet là mais je fais quoi maintenant exactement ?
c'est vraiment ce que tu as en ligne? pas chez toi en local on est ok?


et bien mettre une adresse a sendmail_from et une valeur a SMTP

init_set("sendmail_from","expediteur@dechezmachin.fr"); // en general l'adresse du webmaster du site
init_set("SMTP","smtpdemonhebergeur");

ces deux lignes sont a déclarer avant l'usage de la fonction mail

ton hebergeur doit t'avoir donné des infos sur ton smtp.

free , qui est mon FAI, m'a donné ( enfin donné façon de parler, a peine preté en fait Smiley lol ) smtp.free.fr. chaque hebergeur,FAI en fournit un en général.
Modifié par CPascal (04 Jun 2007 - 19:17)
CPascal a écrit :
c'est vraiment ce que tu as en ligne? pas chez toi en local on est ok?

Oui oui c'est bien ce que j'ai en ligne.

CPascal a écrit :

ton hebergeur doit t'avoir donné des infos sur ton smtp.

C'est le genre de chose qui doit m'avoir été fournie dans un mail de bienvenue ou qq chose comme ça j'imagine.

Merci pour cette reponse si rapide. Smiley smile