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,

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