IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Phpmailer : plus de 5 destinataires


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut Phpmailer : plus de 5 destinataires
    Bonsoir,

    j'utilise Phpmailer pour envoyer des mails ; comme j'ai le même mail à envoyer à plusieurs destinataires, je fais une boucle pour envoyer plusieurs fois le même mail et au-delà de 5, ça me génère une erreur :
    Message was not sent.Mailer error: Could not instantiate mail function
    Comment résoudre ça ?

    Mon code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    $destinataire=["---","---","---","---","---","---" ];
     
    foreach($destinataire as $dest) {
    	$mail->AddAddress($dest); 
     
    $mail->SetLanguage("en",'phpmailer/language/');
    $mail->From     = $mailemetteur; 
    $mail->Subject  = "test"; 
     
    // construction msg
    //-------------------		
     
    $msg="test é è";
    $msg = htmlentities($msg,ENT_NOQUOTES,'UTF-8',false);
    $msg = str_replace(array('&lt;','&gt;'),array('<','>'), $msg);
    $msg = str_replace(array('&amp;lt;','&amp;gt'),array('&lt;','&gt;'), $msg); 
     
    //fin construction msg
    //------------------------
    $mail->CharSet = 'UTF-8';
    $mail->ContentType ='text/html';
    $mail->FromName=$mail;
     
    $mail->Body  = $msg;
     
    if(!$mail->Send()) {
      echo 'Message was not sent.';
      echo 'Mailer error: ' . $mail->ErrorInfo;
    } 
    } //fin gestion multi-destinataires

    (Comme il s'agit d'envoyer le même mail à plusieurs destinataires, il y a peut-être mieux à faire).
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Tu veux envoyer le même mail à plusieurs personnes, mais est-ce que tu veux faire un envoi multiple avec tout le monde dans le même mail, ou alors un envoi par personne (de façon que l'un ne voit pas pas l'autre) ?

    La 5eme personne elle ressemble à quoi son mail ? Car appriori 5 ça fait peu
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Pour faire mon essai, j'avais mis N fois la même adresse (la mienne), donc ---@aol.com
    Mais même si je n'ai pas encore essayé (des choses plus urgentes à traiter), comme il s'agit d'envoyer le même mail à plusieurs destinataires, plutôt que d'envoyer N fois le même mail à une seule personne, je crois que pour faire un mail à plusieurs destinataires, il sufit de faire plusieurs fois l'appel $mail->AddAddress($dest); ; me le confirmes-tu ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    J'ai pu faire l'essai mais bien que j'obtienne le message "votre mail est envoyé", je ne reçois rien, et qui plus est, même si je mets un seul destinataire, donc il y a un loup dans mon code, que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    require("phpmailer/class.phpmailer.php");
    	// envoi mail
     
    function envoi_mail($dest,$msg) {
     
    $mail = new PHPMailer(); 
    //for ($i=0;$i<5;$i++)
    		$mail->AddAddress($dest); 
    $mail->SetLanguage("en",'phpmailer/language/');
    $mail->Subject  = "test";
     
    // construction msg
    //-------------------		
     
    $msg = htmlentities($msg,ENT_NOQUOTES,'UTF-8');
    $msg = str_replace(array('&lt;','&gt;'),array('<','>'), $msg);
    $msg = str_replace(array('&amp;lt;','&amp;gt'),array('&lt;','&gt;'), $msg); 
     
    //fin construction msg
    //------------------------
    $mail->CharSet = 'UTF-8';
    $mail->ContentType ='text/html';
    $mail->FromName="test";
     
    $mail->Body  = $msg;
     
    if(!$mail->Send()) {
      echo 'Message was not sent.';
      echo 'Mailer error: ' . $mail->ErrorInfo;
    }
    else echo "votre message est envoyé<br/>";
    } //fin fct envoi_mail	
       echo "dest=".$_POST['email']." msg=".$_POST['message']."<br/>";	
      envoi_mail($_POST['email'],$_POST['message']);
      /*fin envoi mail*/
      ?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut phpmailer : plusieurs destinataires
    Ca devait être temporaire puisque là j'ai essayé avec 12 destinataires et ça a marché. Cela dit, comme il s'agit de faire un mail multi-destinataires, plutôt que faire N mails, j'ai voulu n'en faire qu'un et alimenter les destinataires par une boucle, ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($destinataire as $dest) { // on ajoute chq destinataire
    $mail->AddAddress($dest);
    }
    mais
    Message was not sent.Mailer error: You must provide at least one recipient email address
    Quel peut être le problème ?

    Si besoin voici mon code entier d'envoi de mail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     function envoi_mail($dest) {
     
    //------------- lecture des différents champs du formulaire
    if (isset($_POST['mail'])) {
            $mailemetteur=$_POST['mail'];
    }
    if (isset($_POST['nom'])) {
            $nom=$_POST['nom'];
    }
    if (isset($_POST['prenom'])) {
            $prenom=$_POST['prenom'];
    }
     
     
    $mail = new PHPMailer($mailemetteur); /*j'ai modifié la classe où j'ai créé un constructeur qui permet de passer en paramètre le nom de l'émetteur (et ça, ça marche) */
     
     
     
    foreach($destinataire as $dest) { // on ajoute chq destinataire
    echo "dest:".$dest."<br./>";
    $mail->AddAddress($dest);
    }
     
     
    $mail->SetLanguage("en",'phpmailer/language/');
     
    $mail->From     = $mailemetteur; 
     
    $mail->Subject  = "test";
     
    // construction msg
    //-------------------		
     
     
      $msg  ="Message envoyé par ".$prenom." ".$nom;
     
    // gestion des caractères spéciaux ds le mail  
    $msg = htmlentities($msg,ENT_NOQUOTES,'UTF-8',false);
    $msg = str_replace(array('&lt;','&gt;'),array('<','>'), $msg);
    $msg = str_replace(array('&amp;lt;','&amp;gt'),array('&lt;','&gt;'), $msg); 
     
    //fin construction msg
    //------------------------
    $mail->CharSet = 'UTF-8';
    $mail->ContentType ='text/html';
     
    //$mail->From=$mail;
    $mail->FromName=$prenom." ".$nom;
     
    $mail->Body  = $msg;
     
    if(!$mail->Send()) {
      echo 'Message was not sent.';
      echo 'Mailer error: ' . $mail->ErrorInfo;
    }
    } //fin fct envoi_mail
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    require("phpmailer/class.phpmailer.php");
     
    $destinataire=["---@aol.com","---@aol.com","---@aol.com","---@aol.com","---@aol.com","---@aol.com","---@aol.com---@aol.com","---@aol.com","---@aol.com","---@aol.com","---@aol.com"];
     
    {
        envoi_mail($destinataire);
    }
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut Phpmailer : plusieurs destinataires
    Bonjour,

    je pars d'un exemple classique et le modifie pour envoyer un mail à plusieurs destinataires ; il n'y a pas d'erreur, mais seul un mail est envoyé (et reçu) ; donc qu'est-ce qui ne va pas ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?
    require("phpmailer/class.phpmailer.php");
    $mail = new PHPmailer();
    $mail->FromName='---';
    $mail->From='---';
    $mail->AddReplyTo('---');
    $destinataire=['---','---','---'];
    foreach($destinataire as $dest)
        $mail->AddAddress($dest);
    $mail->AddReplyTo('---');
    $mail->Subject='Exemple trouvé sur DVP';
    $mail->Body='Voici un exemple d\'e-mail au format Texte'; 
    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';
    } 
     
    unset($mail); ?>
    A chaque fois, à la place de "---", j'ai mis mon adresse.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu as mis trois fois la même adresse dans le tableau ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Oui, et je m'attendais à recevoir 3 fois le même mail ; c'était pas une bonne idée ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tout d'abord, non, l'idée d'envoyer un mail avec trois fois la même adresse comme destinataire n'est pas une idée particulièrement lumineuse...

    Ensuite, je ne connais pas cette classe, mais il m'a suffit de 5 minutes pour aller voir le code sur GitHub, faire une recherche et (comme je m'en doutais un peu), trouver le code qui empêche d'ajouter une adresse si celle-ci existe déjà dans les destinataires...
    ligne 679
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($this->all_recipients[strtolower($address)]))
    Bien entendu avec un commentaire avisé avant la méthode
    Addresses that have been added already return false, but do not throw exceptions
    Bref, on se demande encore une fois comment tu fais tes recherches avant de poster...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Envoi multi destinataires avec PHPMailer
    Par moudjahidine dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2013, 18h15
  2. [OL-2010] Savoir plus tard un destinataire qui a lu mon émail
    Par anouar_chaieb dans le forum Outlook
    Réponses: 0
    Dernier message: 15/03/2013, 17h54
  3. PhpMailer : les mails ne sont plus recus
    Par enrico83600 dans le forum Langage
    Réponses: 7
    Dernier message: 22/04/2010, 14h21
  4. [Outlook] Plus de 49 destinataires ?
    Par doudoustephane dans le forum Outlook
    Réponses: 20
    Dernier message: 19/06/2006, 13h57
  5. [PHPMailer] Mails sans authentification ne fonctionnent plus
    Par matpal dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 15/05/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo