Problème formulaire mail

Ifryona -  
jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   -
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 1613 Date d'inscription   Statut Contributeur Dernière intervention   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 1613 Date d'inscription   Statut Contributeur Dernière intervention   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 1613 Date d'inscription   Statut Contributeur Dernière intervention   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 1613 Date d'inscription   Statut Contributeur Dernière intervention   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