Page 1 sur 1

Problème formulaire PHP

Posté : 24 nov. 2007, 21:06
par Webmc
Bonjour,
Je reprends un sujet déjà traité mais qui semble ne pas répondre à mon problème analogue... la présentation était la suivante... (Désolé, c'est une peu long, mais c'est pour être le plus clair possible...)

"J'ai un script PHP pour recevoir par mail les résultats de mon formulaire. Tout était ok depuis que mon site était en ligne il y a environ 6 mois.

Mon hébergeur LWS (hébergement discount) a changé son serveur mail le mois dernier et maintenant je ne reçois plus les résultats de mon formulaire par mail.

Je les ai contacté, ils m'ont indiqué qu'il fallait mettre un adresse mail avec mon domaine (adresse que j'ai créé et qui fonctionne) et ils m'ont précisé ensuite qui fallait remplir les entêtes correctement pour éviter d'être considéré comme spam ($e-mail, $titre, $message, $entete...). J'ai tenté de chercher sur Internet de la doc et de modifier mon script mais sans succès.

Voici mon script tel qu'il fonctionnait avant le changement de serveur de mon hébergeur :

Aujourd'hui, j'ai le même problème avec cet hébergeur et voici le script qui fonctionnait chez eux avant le changement du serveur et que je viens de tester avec succès sur free :

<?php 

$msg = "Nombre: \t$groupedeboutonsradio1\n"; 
$msg .= "Société:\t$societe\n"; 
$msg .= "Nom/Prénom:\t$nom\n"; 
$msg .= "Adresse:\t$adresse\n"; 
$msg .= "CP/Ville:\t$cp\n"; 
$msg .= "Tel/Fax: \t$tel\n";
$msg .= "E-Mail:\t$email\n"; 

$recipient = "[email protected]";
$subject = "sujet";
$redirection = "redirection.html";
$url_redir = $redirection; 


$mailheaders = "From: titre\n";
$mailheaders .= "Reply-To: $CP\n\n";

mail($recipient, $subject, $msg, $mailheaders);

echo "<script language=\"javascript\">";
echo "window.location=('$url_redir');";
echo "</script>"; 
echo "$reponse";
echo "</BODY></HTML>";

?>
L'hébergeur m'explique qu'il faut des entêtes pour éviter leur anti spam, bien que je reçoive régulièrement des spams de chez eux ??? Bref, après plusieurs échanges avec eux, voici à ce quoi je suis arrivé, mais cela n'a rien changé ! En fait, je pense avoir mal compris et appliqué leurs directives, notamment celle-ci :

"Vous devez mettre $msg .= "Partenaire:\t$partenaire\r\n";
\r\n à la fin de chaque ligne pour qu'il n' y ai pas de problème."
<?php 

$to = '[email protected]';
$from = '[email protected]';
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: $from <[email protected]>\r\n";
$entete .= "Reply-to: $from\r\n";
$entete .= "X-Mailer: PHP\r\n";
$entete .= "X-Priority: 1\r\n";
$entete .= "Return-Path: <[email protected]>\r\n";

$msg = "Nombre: \t$groupedeboutonsradio1\r\n"; 
$msg .= "Société:\t$societe\r\n"; 
$msg .= "Partenaire:\t$partenaire\r\n";
$msg .= "Téléphone:\t$telephone\r\n";
$msg .= "Horaires:\t$horaires\r\n";

$recipient = "[email protected]\r\n";
$sujet = "sujet\r\n";
$redirection = "redirection.html";
$url_redir = $redirection;

$mailheaders = "From: titre\n";
$mailheaders .= "Reply-To: $CP\n\n";

mail($to,$sujet,$msg,$entete,$mailheaders);

echo "<script language=\"javascript\">";
echo "window.location=('$url_redir');";
echo "</script>"; 
echo "$reponse";
echo "</BODY></HTML>";

?> 
Mais comme je ne suis pas doué, j'ai du faire des fautes énormes qui contrarie le serveur ? Alors si vous avez une idée qui peut me sauver, elle sera la bienvenue

Merci d'avance...

Re: Problème formulaire PHP

Posté : 25 nov. 2007, 13:00
par Victor BRITO
Essaie de remplacer cette ligne :
mail($to,$sujet,$msg,$entete,$mailheaders);
par celle-ci :
mail($to,$sujet,$msg,$entete);
En outre, est-ce que la fonction mail() est présente chez ton hébergeur ?

Posté : 27 nov. 2007, 17:21
par Hucky
Bonjour,

Je me retrouve avec exactement le meme souci que l'intervenant précédent (hebergeur LWS).
A savoir que le formulaire PHP ne me pose aucun souci chez free.
Voici mon fihcier PHP:

<?php
function decoder($texte){
        $texte = utf8_decode($texte); // converti en iso-8859-1
        $texte = stripslashes($texte); // élimine les anti-slashs d'échappement
        $texte = nl2br($texte); // converti les retours  en <br />
        $texte = trim($texte); // élimine les '\n', '\r', '\t' etc
        return $texte;
}
 
$erreurPHP="";
 /*
$_POST['sujet'] = 'formulaire HK-3';
$_POST['messageHtml'] = '<html><head><title>Salut</title></head><body>Salut<br />HUCK<br /><br />Bye</body></html>';
$_POST['messageText'] = "Salut ";
$_POST['expediteur'] = "Huck";
$_POST['mailReponse'] = "[email protected]";

*/
if(isset($_POST['sujet']))$sujet = $_POST['sujet'];
else $erreurPHP .= "Variable 'sujet' non transmise\n";
 
if(isset($_POST['messageHtml']))$messageHtml = $_POST['messageHtml'];
else $erreurPHP .= "Variable 'message' non transmise\n";

if(isset($_POST['messageText']))$messageTexte = $_POST['messageText'];
else $erreurPHP .= "Variable 'message' non transmise\n";
 
if(isset($_POST['expediteur']))$expediteur = $_POST['expediteur'];
else $erreurPHP .= "Variable 'expediteur' non transmise\n";
 
if(isset($_POST['mailReponse']))$mailReponse = $_POST['mailReponse'];
else $erreurPHP .= "Variable 'mailReponse' non transmise\n";
 
if($erreurPHP != "") echo utf8_encode("erreurPHP=".$erreurPHP);
else
{
	$to = "[email protected]";
	$sujet = decoder($sujet);
	$expediteur = decoder($expediteur);
	$messagehtml = decoder($messageHtml);
	$messageTexte = utf8_decode($messageTexte);
	
	 //-----------------------------------------------
     //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
     //-----------------------------------------------

     $frontiere = '-----=' . md5(uniqid(mt_rand()));

     //-----------------------------------------------
     //HEADERS DU MAIL
     //-----------------------------------------------

     $headers = 'From: '.$expediteur.' <'.$mailReponse.'>'."\n";
     $headers .= 'Return-Path: <'.$mailReponse.'>'."\n";
     $headers .= 'MIME-Version: 1.0'."\n";
     $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'."\n";
	 $headers .= 'Content-Transfer-Encoding: 8bit';

     //-----------------------------------------------
     //MESSAGE TEXTE
     //-----------------------------------------------
     //$message = 'This is a multi-part message in MIME format'."\n\r";

     $message = '--'.$frontiere."\n";
     $message .= 'Content-Type: text/plain; charset=UTF-8'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\n\r\n\r";
     $message .= $messageTexte."\n";

     
	 //-----------------------------------------------
     //MESSAGE HTML
     //-----------------------------------------------
     $message .= '--'.$frontiere."\n";
     $message .= 'Content-Type: text/html; charset=UTF-8'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
     $message .= $messageHtml."\n\n";

     $message .= '--'.$frontiere."\n"; 

	$mail_OK = mail($to, $sujet, $message, $headers) ;
	
 
	if (!$mail_OK)
	{
		$erreurPHP .= "Problème lors de l'envoi du mail";
		
	}
	echo utf8_encode("erreurPHP=".$erreurPHP);
}
?>
Je n'ai même pas le niveau débutant en php, mais généralement j'arrive à adapter mes codes en conséquence, malheureusement sur ce point précis je cale.
D'avance merci à l'âme charitable qui pourra m'aider.
Fabien.

Même soucis chez OVH.

Posté : 28 nov. 2007, 13:37
par vins1892
Bonjour,

j'ai le même soucis chez OVH depuis un changement chez eux: aucun mail envopyé depuis le formulaire n'arrive sur mon mail.

Voici le code qui fonctionnait avant:
<?php
 
$options=$_POST['options'];
$titre=$_POST['titre'];
$select=$_POST['select'];
$msg = "Objet de la demande:\t$options\n";
$msg .= "Type de permis:\t$select\n";
$msg .= "Nom et prénom:\t$sender_name\n";
$msg .= "E-Mail de contact:\t$sender_email\n";
$msg .= "Num de téléphone:\t$phone\n";
$msg .= "Message:\t$message\n";
 
 
$recipient = "[email protected]";
$subject = "Formulaire d'inscription";
 
 
 
$mailheaders = "From: $sender_email\n";
$mailheaders .= "Reply-To: $sender_email\n\n";
  

mail($recipient, $subject, $msg, $mailheaders);

?>
Merci pour votre aide.