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

  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 ;)
    0
    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.
      0
      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 ??
        0
        1. Je clique sur envoyer de nouveau et hop tout fonctionne !
          0
          1. Contributeur
            et bien.. je vois pas trop.. tu peux envoyer le code avant et apres l appel de ton phpmailer ?
            0
            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");
              }
              ?>
              0
              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 ;)
                0