[PHPmailer] Une erreur que je ne trouve pas
Résolu
Une pattate qui vole
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
Une pattate qui vole Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Une pattate qui vole Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous.
Dans le cadre de mon stage, je désirerais mettre en place la possibilité de faire du publipostage. Cependant, j'ai un petit problème et je ne trouve pas d'où il vient. Quelqu'un pourrait m'aider ?
voici mon code :
mon message d'erreur est : Vous devez fournir au moins une adresse de destinataire.
Je vous remercie d'avance pour les réponse qui pourraient m'être donnée et vous souhaite une agréable journée.
Dans le cadre de mon stage, je désirerais mettre en place la possibilité de faire du publipostage. Cependant, j'ai un petit problème et je ne trouve pas d'où il vient. Quelqu'un pourrait m'aider ?
voici mon code :
$CourielBcc=array(); $nbmail=0; if(isset($_POST['nbmail'])?$_POST['nbmail']:"") { $nbmail=isset($_POST['nbmail'])?$_POST['nbmail']:""; for($i=1;$i<=$nbmail;$i++) { $CourielBcc[$i]=isset($_POST['CourielBcc']['$i'])?$_POST['CourielBcc']['$i']:""; } }else{ $CourielAdr=isset($_POST['Couriel'])?$_POST['Couriel']:""; } $subject=isset($_POST['Sujet'])?$_POST['Sujet']:""; $msg=isset($_POST['Message'])?$_POST['Message']:""; require "C:/Users/UD CFTC 94/Desktop/Base-de-Donnee/PHPMailer_5.2.1/PHPMailer_5.2.1/class.phpmailer.php"; $mail = new PHPmailer(); $mail->SetLanguage('fr'); $mail->IsSMTP(); $mail->SMTPAuth=true; $mail->Host='smtp.wanadoo.fr'; $mail->Port=587; $mail->Username='xxx'; $mail->Password='xxx'; $mail->From='xxx@xxx'; $mail->AddAddress('<xxx@xxx>'); if($nbmail == 0) { $mail->AddAddress('<'.$CourielAdr.'>'); }else{ $mail->AddAddress('<xxx@xxx>'); for($j=1;$j<=$nbmail;$j++) { $mail->AddBcc('<'.$CourielBcc[$j].'>'); } } $mail->Subject=$subject; $mail->Body=$msg; if(!$mail->Send()){ //Teste le return code de la fonction echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7) } else{ echo 'Mail envoyé avec succès'; } $mail->SmtpClose(); unset($mail); include('index.php') ?> </body> </html>
mon message d'erreur est : Vous devez fournir au moins une adresse de destinataire.
Je vous remercie d'avance pour les réponse qui pourraient m'être donnée et vous souhaite une agréable journée.
A voir également:
- [PHPmailer] Une erreur que je ne trouve pas
- Pourquoi ma tv ne trouve pas toutes les chaînes - Guide
- Ou se trouve le presse papier - Guide
- Ou se trouve la corbeille de whatsapp - Guide
- Où se trouve mon adresse url ? - Guide
- Erreur 0x80070643 - Accueil - Windows
7 réponses
$CourielBcc=array(); $nbmail=0; //la tu mélanges la methode de test ternaire et la methode "classique" /* if(isset($_POST['nbmail'])?$_POST['nbmail']:"") { $nbmail=isset($_POST['nbmail'])?$_POST['nbmail']:""; for($i=1;$i<=$nbmail;$i++) { $CourielBcc[$i]=isset($_POST['CourielBcc']['$i'])? $_POST['CourielBcc']['$i']:""; } }else{ $CourielAdr=isset($_POST['Couriel'])?$_POST['Couriel']:""; } */ if(isset($_POST['nbmail'])) { $nbmail=$_POST['nbmail']); for($i=1;$i<=$nbmail;$i++) { $CourielBcc[$i]=isset($_POST['CourielBcc']['$i'])? $_POST['CourielBcc']['$i']:""; } }else{ $CourielAdr=isset($_POST['Couriel'])?$_POST['Couriel']:""; } $subject=isset($_POST['Sujet'])?$_POST['Sujet']:""; $msg=isset($_POST['Message'])?$_POST['Message']:""; //la ton appli n'est pas portable, il faut mettre une adresse relative par rapport à ton script require "C:/Users/UD CFTC 94/Desktop/Base-de-Donnee/PHPMailer_5.2.1/PHPMailer_5.2.1/class.phpmailer.php"; .......
//je t'avais mis la correction en dessous //donc: $nbmail=isset($_POST['nbmail'])? $_POST['nbmail']:""; /* ça c'est la methode ternaire qui equivaut à if(isset($_POST['nbmail'])){ $nbmail=$_POST['nbmail']; }else{ $nbmail=""; } */ //tu ne peux pas mélanger un test if avec la methode ternaire if(isset($_POST['nbmail'])? $_POST['nbmail']:"") //puisque dans cette ligen qu'est ce qui est égal à $_POST['nbmail'] ou "" ??
mets une trace:
a la ligne juste avant
tu mets:
a la ligne juste avant
$mail = new PHPmailer(); $mail->SetLanguage('fr'); $mail->IsSMTP();
tu mets:
echo "Adresse saisie: ".$CourielAdr;
bon, mon problème viens peut-être de mon code dans lequel se trouve la méthode POST
Si vous voyez le problème, merci de me le signaler, car moi j'arrive vraiment pas à le trouver :/
$i=1; $CourielBcc=array(); $mail=0; if(isset($_POST['Couriel'])?$_POST['Couriel']:"") { $Couriel=isset($_POST['Couriel'])?$_POST['Couriel']:""; }else{ $mail=isset($_POST['nbmail'])?$_POST['nbmail']:""; while($i<=$mail) { $CourielBcc[$i]=isset($_POST['CourielBcc'][$i])?$_POST['CourielBcc'][$i]:""; $i++; } } echo'<table><tr><td><br />Entrer le corps du message :</br> <FORM Method="POST" Action="sending_mail.php"> <input type=hidden name=MailMaitre value="xxx@xxx">'; if($mail == 0) { echo'<input type=hidden name="CourielBcc[1]" value='.$Couriel.'><br />'; }else{ for($i=1;$i<=$mail;$i++) { echo'<input type=hidden name="CourielBcc['.$i.']" value='.$CourielBcc[$i].'><br />'; } } echo'Sujet : <input type=text size=50 name=Sujet><br /> <textarea cols="50" name=Message>Entrer votre message</textarea> <br><input type=submit value=Envoie> </FORM></td></tr> <tr><td><FORM Mthod="POST" Action="index.php"> <input type=submit value=Annuler> </FORM></td><tr>';
Si vous voyez le problème, merci de me le signaler, car moi j'arrive vraiment pas à le trouver :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il est très difficile de t'aider si tu procèdes ainsi,
on te suggère des modifs (ne pas mélanger la méthode ternaire et les if
mettre un echo qui nous renseigne sur le contenu d'une varaible reçue
tu ne le fait pas alors ????
on te suggère des modifs (ne pas mélanger la méthode ternaire et les if
mettre un echo qui nous renseigne sur le contenu d'une varaible reçue
tu ne le fait pas alors ????
Pour la méthode ternaire, je l'ai "apprise" que hier. Travaillant la base de donnée sur les lieu de mon stage et non sur mon ordinateur personnel, je n'ai pas encore pu modifier tout les fichier où j'ai besoin de le faire.
Pour ce qui est de mettre un echo, je vais répondre d'une manière basique en java:
Que va retourner ce bout de code ?
«error undefined variable j»
avec mon echo, au stade où en était mon code, c'était le même problème, il arrivait un cas ou $CourielAdr n'était pas définie. Voila pourquoi mettre un echo ne servait à rien. Je te remercie de tes conseils, il me sont très utiles, mais s'ils ne sont pas entièrement compatible avec mon code, il ne m'est pas possible de les appliquer ;)
bon, au passage, voila la version "évolué" de mon premier code :
Pour ce qui est de mettre un echo, je vais répondre d'une manière basique en java:
int i = 2; if(i==1) { int j = 2; } System.out.println(j);
Que va retourner ce bout de code ?
«error undefined variable j»
avec mon echo, au stade où en était mon code, c'était le même problème, il arrivait un cas ou $CourielAdr n'était pas définie. Voila pourquoi mettre un echo ne servait à rien. Je te remercie de tes conseils, il me sont très utiles, mais s'ils ne sont pas entièrement compatible avec mon code, il ne m'est pas possible de les appliquer ;)
bon, au passage, voila la version "évolué" de mon premier code :
$CourielBcc=array(); $i=1; $CourielAdr=isset($_POST['MailMaitre'])?$_POST['MailMaitre']:""; while(isset($_POST['CourielBcc']['$i'])) { $CourielBcc[$i]=$_POST['CourielBcc']['$i']; $i++; } // Subject $subject=isset($_POST['Sujet'])?$_POST['Sujet']:""; // Message $msg=isset($_POST['Message'])?$_POST['Message']:""; require "PHPMailer_5.2.1/PHPMailer_5.2.1/class.phpmailer.php"; $mail = new PHPmailer(); $mail->SetLanguage('fr'); $mail->IsSMTP(); $mail->SMTPAuth=true; $mail->Host='smtp.wanadoo.fr'; $mail->Port=587; $mail->Username='xxx'; $mail->Password='xxx'; $mail->From='xxx@xxx'; $mail->AddAddress($CourielAdr); foreach($CourielBcc as $couriel) { $mail->AddBCC('<'.$couriel.'>'); } $mail->Subject=$subject; $mail->Body=$msg; if(!$mail->Send()){ //Teste le return code de la fonction echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7) } else{ echo 'Mail envoyé avec succès'; } $mail->SmtpClose(); unset($mail);
bon je vais au passage t'apprendre comment afficher le contenu d'un array
echo '<pre>';
print_r($CourielBcc );
echo '</pre>';
Tu ne m'apprend rien concernant l'echo d'une variable, mais si tu as indefined c'est que tu n'est pas passé dans la condition qui la charge donc c'est quand même une indication non !
echo '<pre>';
print_r($CourielBcc );
echo '</pre>';
Tu ne m'apprend rien concernant l'echo d'une variable, mais si tu as indefined c'est que tu n'est pas passé dans la condition qui la charge donc c'est quand même une indication non !
pour comment afficher un array, merci beaucoup ^^ ça me fera gagner de la place dans le code.
Sinon, pour mon programme, c'était soit une condition soit aucune, donc en fonction des éléments, je savais que je n'aurais pas ma variable définie. de fait, ça aurait pu ne pas m'aider et plutôt m'induire en erreur.
Sinon, pour mon programme, c'était soit une condition soit aucune, donc en fonction des éléments, je savais que je n'aurais pas ma variable définie. de fait, ça aurait pu ne pas m'aider et plutôt m'induire en erreur.
rigole un coup, j'ai réglé mon problème ...
et la boucle foreach est repassé en simple boucle for ...
while(isset($_POST['CourielBcc']['$i'])) { $CourielBcc[$i]=$_POST['CourielBcc']['$i']; $i++; }est devenu :
while(isset($_POST["CourielBcc"]["$i"])) { $CourielBcc[$i]=$_POST["CourielBcc"]["$i"]; $i++; }
et la boucle foreach est repassé en simple boucle for ...
le mesage d'erreur que tu as c'est bien: "Vous devez fournir au moins une adresse de destinataire"
donc il faut que tu mettes des traces donc des echo dans ton code pour voir quelles sont les variables qui sont vides, le print-r te serra utile si tu le mets juste avant le debut de l'envoi du mail
$mail = new PHPmailer();
$mail->SetLanguage('fr');
$mail->IsSMTP();
$mail->SMTPAuth=true;
une fois debugué tu supprimes bien sur toutes ces traces
donc il faut que tu mettes des traces donc des echo dans ton code pour voir quelles sont les variables qui sont vides, le print-r te serra utile si tu le mets juste avant le debut de l'envoi du mail
$mail = new PHPmailer();
$mail->SetLanguage('fr');
$mail->IsSMTP();
$mail->SMTPAuth=true;
une fois debugué tu supprimes bien sur toutes ces traces
je n'avait plus le problème de destinataire. j'avais réglé ce problème en remettant un isset($_POST[]) pour obtenir une adresse sûr.
mon problème était maintenant dans les boucles mais comme dit dans mon précédent commentaire, c'est réglé.
Merci beaucoup d'avoir pris un peu de ton temps pour m'aider ^^
mon problème était maintenant dans les boucles mais comme dit dans mon précédent commentaire, c'est réglé.
Merci beaucoup d'avoir pris un peu de ton temps pour m'aider ^^
Par contre, pourrais-tu t'expliquer, je n'ai commencé le php qu'il y a trois semaine pour mon stage aussi, deux ligne de commentaire et un code corrigé disant où j'ai faux mais pas pourquoi j'ai faux n'est n'est pas ce qu'il y a de mieux pour m'aider à comprendre mon problème ^^'''