Problème formulaire mail

Bonjour,

Le formulaire de contact du site dont je m'occupe s'est mis à bugué du jour au lendemain, sans avoir subit aucune modification.

Il fait appel à une classe phpmailer, je ne sais pas si le problème peut venir de là...

Il fonctionnait très bien et puis depuis peu il bug ; lorsque l'on envoie un mail il ne part pas, et si on essaie de le renvoyer ànouveau ça semble fonctionner... C'est donc très aléatoire.

Auriez-vous une idée d'où cela peut venir ?

Merci par avance,
Ifryona.
Configuration: Windows XP
Firefox 3.0.14

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour,

    Donc la fonction mail (phpmailer) en elle meme fonctionne... c'est juste l envoie qui est aléatoire...

    Cela peut venir de ton hebergeur....

    certains limites le nombre de mails que tu peux envoyer par heure/jour/semaine/mois...

    contacte les pour savoir s il n y a pas ce genre de limitation ;)
    1. Merci pour ta réponse !

      Je les ai déjà contacter et ils m'ont dit que ça pouvait venir de ma classe php.mailer...

      Le truc c'est qu'il n'y a eu aucun changement de mon côté, ni du côté de l'hébergeur et qu'avant tout fonctionnait très bien !

      Encore plus étrange le premier envoie ne fonctionne pas mais si je ré-envoie ça fonctionne... Serait-ce le cas si ça viendrait d'une limites de mail ? Surtout qu'il n'y a pas non plus des envois énormes de mail via ce formulaire.

      Ifryona.
      1. Contributeur
        re :)

        quand tu écris :
        Encore plus étrange le premier envoie ne fonctionne pas mais si je ré-envoie ça fonctionne...

        tu fais F5 pour le ré-envoie ou tu reclique sur envoyer ??
        1. Contributeur
          et bien.. je vois pas trop.. tu peux envoyer le code avant et apres l appel de ton phpmailer ?
          1. Oui biensûr ! Voilà le code du fichier où se fait l'appel à phpmailer ! Le message d'erreur que vous trouverez dans le code plus bas est celui qui s'affiche lorsque j'essaie d'envoyer un mail.

            <?php
            
            
            if (isset($_POST['nom'])){
            	
            extract($_POST);
            
            $message=StripSlashes($message);
            
            
            
            //CONTENU
            $texte = "<table width='450' align='center'  style='border:1px solid #CCD215;font-family: Verdana;font-size: 10px;color:#6A3800;background-color:#FFFFFF;'>";
            $texte .="<tr><th style='border:1px solid #6A3800;background-color:#CCD215;'><span style='font-family: Verdana;font-size: 11px;color:#6A3800;'>Formulaire</span></th></tr>";
            $texte .="<tr><td> <strong>Nom</strong> : ".$nom."</td></tr>";
            $texte .="<tr><td> <strong>Prénom</strong> : ".$prenom."</td></tr>";
            $texte .="<tr><td> <strong>E-mail</strong> : ".$email."</td></tr>";
            $texte .="<tr><td> <strong>Téléphone</strong> : ".$telephone."</td></tr>";
            $texte .="<tr><td> <strong>Entreprise</strong> : ".$entreprise."</td></tr>";
            $texte .="<tr><td> <strong>Site</strong> : ".$site."</td></tr>";
            $texte .="<tr><td> <strong>Message</strong> : ".$message."</td></tr>";
            
            $texte .="</table><br><br>";
            
            
            //echo $texte;
            //exit();
            
              include_once("../inclusion/class.phpmailer.php");
              $mailer = new phpmailer();
              $mailer->IsSMTP();
               $mailer->Host = "localhost"; //en ligne
               $mailer->Username = "bzzzz";  // SMTP username
               $mailer->Password = "bzzzz"; // SMTP password
            
               $mailer->Subject = "Envoi d'un formulaire depuis le site";
               $mailer->From = $email;
               $mailer->FromName = $prenom." ".$nom;
               $mailer->AddAddress("contact@bzzzz.fr"); //mettre ici l'adresse de destination
               $mailer->IsHTML(true);
               $mailer->Body = $texte;
               //@$mailer->Send();
               
               if(!$mailer->Send()){
               
                echo "<div align='center' style='margin-top:200px;color=#ff0000;'>";
            	echo "Erreur lors de l'envoi du mail ! <br><br>  Nous vous prions de bien vouloir nous excuser et vous invitons à recommencer l'opération en <a href='bzzzz-nous-contacter.php'>cliquant ici</a>";
            	echo "</div>"; 
            	}
            	
            	else{ //si le mail est bien parti
               
                header("Location: bzzzz-mail-envoye.php"); 
            	}
            }
            
            else { //si la variable POST n'existe pas, on renvoie vers la page d'accueil
            	header("Location: ../index.php");
            }
            ?>
            1. Contributeur
              bonjour,

              desolé de ne pas avoir repondu plus tot...

              tout d'abord, assure toi qu il passe bien le

              if (isset($_POST['nom'])){...}

              En principe, si ton wamp ou easyphp est bien configuré, tu ne devrais pas avoir besoin de ces 3 lignes :

              $mailer->Host = "localhost"; //en ligne
              $mailer->Username = "bzzzz"; // SMTP username
              $mailer->Password = "bzzzz"; // SMTP password

              De plus, apparemment, tu fais te"s test en local, hors, pour l envoie de mail, il vaut mieux tester directement en ligne car certaines fonctions ne sont pas forcement actives...

              et vérifie que le chemin existe:
              header("Location: bzzzz-mail-envoye.php");
              je sais pas où est situé ce fichier dans ton site, mais si il est à la racine =>
              header("Location: ../bzzzz-mail-envoye.php");

              enfin, fait des essais pas à pas, c'est a dire en utilisant le moins de variables possibles:

              essai d abord ca :

              if (isset($_POST['nom'])){

              extract($_POST);

              $message="mon message";

              //CONTENU
              $texte="Mon Texte";

              include_once("../inclusion/class.phpmailer.php");
              $mailer = new phpmailer();
              $mailer->IsSMTP();
              $mailer->Host = "localhost"; //en ligne
              $mailer->Username = "bzzzz"; // SMTP username
              $mailer->Password = "bzzzz"; // SMTP password

              $mailer->Subject = "Envoi d'un formulaire depuis le site";
              $mailer->From = "monemail@me.com";
              $mailer->FromName = "prenom nom";
              $mailer->AddAddress("contact@bzzzz.fr"); //mettre ici l'adresse de destination
              $mailer->IsHTML(true);
              $mailer->Body = $texte;
              //@$mailer->Send();

              if(!$mailer->Send()){

              echo "Erreur lors de l'envoi du mail !";
              }

              else{ //si le mail est bien parti

              echo "Mail envoyé !";
              }
              }

              else { //si la variable POST n'existe pas, on renvoie vers la page d'accueil
              echo "Pas de Post";
              }
              ?>

              Donc si ca ca marche pas c'est que le probleme vient soit du post, dans ce cas, verifie que la page qui post est bien ecrite, à la rigueur, envoie nous une copie.. soit que

              $mailer->Host = "localhost"; //en ligne
              $mailer->Username = "bzzzz"; // SMTP username
              $mailer->Password = "bzzzz"; // SMTP password

              genere une erreur)

              et si ca marche des le premier envoie, alors remet petit à petit le code original, et tu verra où ca plante ;)