Problème formulaire mail

Ifryona -  
jjsteing Messages postés 1803 Statut Contributeur -
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.

8 réponses

jjsteing Messages postés 1803 Statut Contributeur 181
 
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
Ifryona
 
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
jjsteing Messages postés 1803 Statut Contributeur 181
 
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
Ifryona
 
Je clique sur envoyer de nouveau et hop tout fonctionne !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jjsteing Messages postés 1803 Statut Contributeur 181
 
et bien.. je vois pas trop.. tu peux envoyer le code avant et apres l appel de ton phpmailer ?
0
Ifryona
 
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
Ifry
 
une idée ?
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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