Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: Flomaluso le le 31-07-2013 a 19:50:34

Titre: Problème avec script de contact
Posté par: Flomaluso le le 31-07-2013 a 19:50:34

Bonsoir à tous :)

Je fais de nouveaux appels à vous et à vos grandes connaissances, puisque j'ai de nouveaux un problème, mais sa vous vous en doutiez déjà. ;)

Alors voilà, je vous l'expose :
J'ai mis un script de contact sur le site que j'essaie de faire hier. Le script marchait bien hier, je recevais bien sur ma boite mail les messages que j'ai essayé de m'envoyer pour test; mais aujourd'hui, ça ne marche plus, et je n'arrive pas à trouver ce que j'ai bien pu modifier. Le script m'affiche bel et bien le message me disant que le message et partis, mais il n'arrive jamais sur ma boite mail. J'espère donc que l'un de vous pourra m'aider à résoudre ce problème.


Voici le code :
Code:
<?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";
$list['f_5']=array("Sélectionnez","Oui","Non merci");
$list['f_6']=array("Sélectionnez","Oui");
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=strip_tags(trim($f_2));
   $f_3=strip_tags(trim($f_3));
   // Verification des champs
   if(strlen($f_2)<2){
      $erreur.="<li><span class='txterror'>Le champ &laquo; Mon mail &raquo; est vide ou incomplet.</span>";
      $errf_2=1;
   }else{
      if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
      '@'.
      '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
      '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
      $f_2)){
         $erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
         $errf_2=1;
      }
   }
   if(strlen($f_3)<2){
      $erreur.="<li><span class='txterror'>Le champ &laquo; Adresse mail de replis &raquo; est vide ou incomplet.</span>";
      $errf_3=1;
   }else{
      if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
      '@'.
      '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
      '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
      $f_3)){
         $erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
         $errf_3=1;
      }
   }
   if(strlen($f_4)<2){
      $erreur.="<li><span class='txterror'>Le champ &laquo; Votre message &raquo; est vide ou incomplet.</span>";
      $errf_4=1;
   }
   if($f_5==0){
      $erreur.="<li><span class='txterror'>Le champ &laquo; Je m'abonne à la newsletter &raquo; n'a pas été défini.</span>";
      $errf_5=1;
   }
   if($f_6==0){
      $erreur.="<li><span class='txterror'>Le champ &laquo; J'accepte les Conditions Générales d'Utilisation &raquo; n'a pas été défini.</span>";
      $errf_6=1;
   }
   if($erreur==""){
      // Création du message
      $titre="Message de votre site";
      $tete="From:Site@Declaration-amoureuse-anonyme-avec-reponse.web44.net\n";
      $corps.="Prénom : ".$f_1."\n";
      $corps.="Mon mail : ".$f_2."\n";
      $corps.="Adresse mail de replis : ".$f_3."\n";
      $corps.="Votre message : ".$f_4."\n";
      $corps.="Je m'abonne à la newsletter : ".$list['f_5'][$f_5]."\n";
      $corps.="J'accepte les Conditions Générales d'Utilisation : ".$list['f_6'][$f_6]."\n";
      if(mail("monadresse@monfournisseur.fr", $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>";
      }
   }
}
?>
<html>

<head>
<style type="text/css" media="screen"><!--
INPUT { color: #FFFFFF; font-size: 12px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: ffc150 }
SELECT { color: #FFFFFF; font-size: 12px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: ffc150 }
TEXTAREA { color: #FFFFFF; font-size: 12px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: ffc150 }
.txterror { color: #FFFFFF; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: #FFFFFF; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
--></style>
</head>


<body>
<style>
body {background-color: #778899;}
</style>

<? if($ok_mail=="true"){ ?>
   <table width='100%' border='0' cellspacing='1' cellpadding='1'>
      <tr><td><span class='txtform'>Votre message nous à bien été transmis.</span></td></tr>
            <tr><td><span class='txtform'>Nous vous remercions pour ce dernier, nous éssayerons de le traiter dans les plus brefs 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'>Prénom :</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'>Mon mail* :</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%'><span class='txtform'>Adresse mail de replis* :</span></td><td><input type='text' style='width:200 <?if($errf_3==1){print("; background-color: ".

$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Votre message* :</span></td><td><textarea style='width:360 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".

$color_font_warn);}?>;' name='f_4' rows='6' cols='40'><?echo$f_4?></textarea></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Je m'abonne à la newsletter* :</span></td><td><select style='width:200 <?if($errf_5==1){print("; background-color: ".$color_form_warn.";

color: ".$color_font_warn);}?>;' name='f_5' size='1'>
<? for($id=0;$id<count($list['f_5']);$id++){
if($id==$f_5){$ct="selected";}
print("<option ".$ct." value=".$id.">".$list['f_5'][$id]."</option>");
unset($ct);
}?>
</select></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>J'accepte les Conditions Générales d'Utilisation* :</span></td><td><select style='width:200 <?if($errf_6==1){print("; background-color: ".

$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_6' size='1'>
<? for($id=0;$id<count($list['f_6']);$id++){
if($id==$f_6){$ct="selected";}
print("<option ".$ct." value=".$id.">".$list['f_6'][$id]."</option>");
unset($ct);
}?>
</select></td></tr>
<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<? } ?>
</body>
</html>


Merci par avance pour votre aide ;)
A bientôt
Flo'

Titre: Re:Problème avec script de contact
Posté par: burtgummer le le 31-07-2013 a 22:38:17

bonsoir,

à cette ligne

if(mail("monadresse@monfournisseur.fr", $titre, stripslashes($corps), $tete)){
$ok_mail="true";

remplacer monadresse@monfournisseur.fr par votre mail

ça devrait fonctionner


Titre: Re:Problème avec script de contact
Posté par: Flomaluso le le 01-08-2013 a 00:04:55

Bonsoir burtgummer,

Merci beaucoup pour votre réponse = ) Mais ce n'est pas cela, j'ai mis cette adresse juste pour pouvoir publier le post, mais dans ma page, j'ai déjà placé mon adresse. Merci tout de même pour votre réponse. J'espère que quelqu'un aura la solution.

A bientôt,
Flo'

Titre: Re:Problème avec script de contact
Posté par: burtgummer le le 01-08-2013 a 02:42:20

bonjour,

je viens d'essayer le script sur un hébergement. Tout fonctionne parfaitement mais au bout de 2-3 tests sur chaque boite les messages arrivent dans les spams

(testé sur gmail, boite 1&1, yahoo)

cordialement,

Titre: Re:Problème avec script de contact
Posté par: pppplus le le 01-08-2013 a 09:21:55

Si vous isolez juste le script du mail, vous aurez plus de réponses.
Car là, il faut parcourir pas mal de lignes inutiles avant d'arriver au mail proprement dit.

Pour éviter d'aller en spam automatiquement, il va falloir améliorer le header du mail.

$tete="From:Site@Declaration-amoureuse-anonyme-avec-reponse.web44.net\n";

Est insuffisant.
De mémoire, il faut un espace après le From:

Envoyer les mails en SMTP avec signature DKIM 2048bits devient nécessaire pour gmail par exemple, sinon, c'est en spam. Mais au moins, en envoyant avec mail(), il faut un bon header de mail.

Je ne sais pas quelle est votre version php, mais <? ne marche pas à partir de php5.3. Il faut <?php

Exemple de header qui devrait améliorer les choses (avec html et txt) :

Code:
<?php
   $headers="";   
   $boundary = md5(uniqid (rand()));/*séparation du mail HTML / TEXT*/
   $headers .= "Return-Path: ".$expediteur." \r\n";
   $headers .= "Date:" . date("D, j M Y G:i:s O") . "\r\n";
   $headers .= "Error-To: ".$expediteur." \r\n";
   $headers .= "From: ".$expediteur."\r\n";
   $headers .= "Reply-to: ".$expediteur."\r\n";
   $headers .= "X-Priority: 3\r\n";
   $headers .= "X-Mailer: PHP ".phpversion()."\r\n";
   $headers .= "Mime-Version: 1.0\r\n";
   $headers .= "Content-Type: multipart/alternative;\r\n";
   $headers .= "   boundary=\"p2".$boundary."\"\r\n";
   $headers_sup= "-f".$expediteur;


/*DEBUT DU MESSAGE*/
/*$message="This is a multi-part message in MIME format.\r\n\r\n";*/
$message="";
/*MESSAGE EN TEXTE*/
$message .= "--p2".$boundary."\r\n";
$message .= "Content-Type: text/plain; charset = \"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 8bit\r\n\r\n\r\n";
$text=html_entity_decode(strip_tags($email_message));
$message .= $text;
$message .= "\r\n\r\n\r\n";
/*MESSAGE EN HTML*/
$message .= "--p2".$boundary."\r\n";
$message .= "Content-Type: text/html; charset = \"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 8bit;\r\n\r\n\r\n";

$message.="<html><head><title>".$subject."</title></head><body>";
$message.="<br/>\r\n".$email_message;
$message.="</body></html>\r\n\r\n\r\n\r\n";

$message .= "--p2".$boundary."--\r\n";

mail($destinataire,$siteurl." ".mb_encode_mimeheader($subject),$message,$headers,$headers_sup);

?>


Attention : $headers_sup n'est pas supporté par tous les hébergeurs.
Donc, enlevez-le si ça bloque.
Ce code utilise 4 variables :

$subject le sujet de votre email
$email_message qui est votre message au format HTML
$expediteur qui est l'adresse qui envoie
$destinataire adresse à qui vous envoyez

Voilà, j'espère que ça vous sera utile.
Envoyez un mail à check-auth@verifier.port25.com
Vous aurez une réponse, quant au score spam, dkim ...

Dernière chose : l'adresse expéditeur devrait être une "vraie" adresse disponible sur le domaine d'envoi, et pas une adresse gmail, free, live.... Ca n'empêche pas d'envoyer le mail, ça empêche juste la bonne réception.

Titre: Re:Problème avec script de contact
Posté par: Flomaluso le le 05-08-2013 a 22:36:05

Bonsoir,

Merci à vous deux pour vos réponses, mais sa n'a visiblement pas décidé de marcher. En tout cas merci beaucoup à vous d'avoir pris un peu de temps pour me répondre. Je me débrouillerai sans se script, temps pi.

Encore merci à vous


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.