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 :

[Mail] Envoi multiple avec phpmailer


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut [Mail] Envoi multiple avec phpmailer
    Bonjour a tous, j'aurai besoin que mon script utilisant phpmailer envoi un mail a toutes les personnes de la liste.
    Je m'apercois que je n'envoi le mail qu'as la dernière personne dans la base de donnée en effectuant un var_dump.
    Voici le script qui envoi le mail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function loadMailUsers(){
    		$alllist = new DbUsersAdmin;
    		foreach ($alllist->loadUsersFrontend() as $item => $email){
    			$listmail = $email['email'];
    		}
    		return $listmail;
    	}
    voici ma fonction pour la base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j'ai retiré mon code :D
    J'ai beau me creuser je ne vois pas ....

    Voici le retour de mon var_dump:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string(25) "momail@gmail.com"
    hors il devrai y en avoir deux ???

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je n'ai pas regardé tout le detail mais ce n'est pas un truc comme ca qu'il te faudrait plutot ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($alllist->loadUsersFrontend() as $item => $email){
    			$listmail .= $email['email'] . ',';
    		}

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    -> Ajouter une virgule sauf pour le dernier de la liste...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $listmail='';
    foreach ($alllist->loadUsersFrontend() as $item => $email){
      if(!empty($listmail)) $listmail.=' ,';
      $listmail.=$email['email'];
    }
    Pour vérifier que la liste des destinataires est correcte :

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ce sujet pourrait t'intéresser :
    http://www.developpez.net/forums/d59...-envoi-e-mail/

  5. #5
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    non didju exact, j'avais beau retourner la question dans ma tête pas moyen de tomber sur la soluce.
    le pire c'est que j'ai fais une correction sur un autre forum pour le même prob honte a moi.
    merci a vous deux

  6. #6
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    correction j'ai tout de même un probléme lors de la reception du mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    his is an automatically generated Delivery Status Notification
     
    Delivery to the following recipient failed permanently:
     
        test@gmail.com ,test2@gmail.com
     
    Technical details of permanent failure: 
    Probe failed: Illegal To: address (invalid domain name):  test@gmail.com ,test2@gmail.com

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ton hebergeur a peut etre des restrictions sur les destinataires de mail.
    qu'est ce cela donne avec ton adresse sur l'hebergeur ?

  8. #8
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    ben en faites la je test en local avec l'adresse en question .
    Donc si vous voulez j'envoi le mail via le formulaire sur ce meme mail via smtp.
    Je vais tester avec un autre serveur smtp pour voir mais sinon en principe j'utilise OVH
    C'est surement cela le probléme?

  9. #9
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    si je ne mets qu'une seul adresse sa fonctionne par contre si j'en mets plus d'une j'ai droit a l'erreur ????

    Voila ce que me mets phpmailer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur SMTP : Les destinataires suivants sont en erreur :
    Donc il y as bien un probléme avec la virgule ou espace entre les destinataires??
    En tout cas la connexion ssl ce fais parfaitement
    on dirai que c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->AddAddress($this->loadMailUsers());
    Qui ne fonctionne pas correctement et je me demand s'il ne doit pas être bouclé, car dans la doc j'ai cru voir :
    $mail->AddAddress(mail1@mail.com);
    $mail->AddAddress(mail2@mail.com);
    $mail->AddAddress(mail3@mail.com);
    une idée pour une boucle correct alors que j'ai déjà un tableau des adresses

  10. #10
    Membre régulier Avatar de daajack
    Inscrit en
    Octobre 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 97
    Points : 97
    Points
    97
    Par défaut
    Hello,

    Je ne connais pas cette classe, je ne peux donc pas répondre à ta dernière question, mais pour ce que j'ai vu avant, il me semble que les espaces fonctionnent aussi pour mettre plusieurs destinataires, et tu peux utiliser une fonction méconnue, et pourtant au combien pratique : implode, ce qui nous donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stringDest = implode(' ', $alllist->loadUsersFrontend());

  11. #11
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    sa ne change pas grand chose, j'ai un souci avec implode il m'indique :
    Erreur SMTP : Les destinataires suivants sont en erreur : monmail1@mail.comArray ,Arraymonmail2@mail.com
    j'ai mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function loadMailUsers(){
    		$alllist = new DbUsersAdmin;
    		$listmail='';
    		foreach ($alllist->loadUsersFrontend() as $item => $email){
     
    		  if(!empty($listmail)) $listmail .= implode(' ,', $alllist->loadUsersFrontend());
    		  $listmail.=$email['email'];
    		}
     
    		return $listmail;
    	}

  12. #12
    Membre régulier Avatar de daajack
    Inscrit en
    Octobre 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 97
    Points : 97
    Points
    97
    Par défaut
    Non, l'idée c'est justement de remplacer la boucle :
    Je t'avertis c'est pas censé résoudre ton problème, c'était juste pour te montrer ma culture infinie...

    Tu remplaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $listmail='';
    foreach ($alllist->loadUsersFrontend() as $item => $email){
     
      if(!empty($listmail)) $listmail .= implode(' ,', $alllist->loadUsersFrontend());
      $listmail.=$email['email'];
    }
     
    return $listmail;
    Par ceci :
    Apparemment c'est un tableau de tableaux associatif, dont seul la clé 'email' nous intéresse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $emails = Array();
    foreach ($alllist->loadUsersFrontend() as $user) $emails[] = $user['email'];
    return implode(' ', $emails);
    Du coup y'a quand même une boucle, mais c'est plus stylé que de faire de la mise en forme de chaîne avec des méthodes de barbare

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par gtraxx Voir le message
    si je ne mets qu'une seul adresse sa fonctionne par contre si j'en mets plus d'une j'ai droit a l'erreur ????

    Voila ce que me mets phpmailer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur SMTP : Les destinataires suivants sont en erreur :
    Donc il y as bien un probléme avec la virgule ou espace entre les destinataires??
    En tout cas la connexion ssl ce fais parfaitement
    on dirai que c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->AddAddress($this->loadMailUsers());
    Qui ne fonctionne pas correctement et je me demand s'il ne doit pas être bouclé, car dans la doc j'ai cru voir :

    une idée pour une boucle correct alors que j'ai déjà un tableau des adresses
    C'est mon code et il marche, si ça peut t'aider...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $length = sizeof($email);
    	$m=1;
    	while ($m<$length+1){
    		$subject = stripslashes($_POST['sujet']);
    		$message = "";
     
    		$mail = new PHPmailer();
    		$mail->IsHTML(true);
    		$mail->FromName='ATL';
    		$mail->From='from@adresse.mail';
    		$mail->AddAddress($email[$m]); //$email est un array avec mes adresses

  14. #14
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function loadMailUsers(){
    		$emails = Array();
    		foreach ($this->dbh->loadUsersFrontend() as $user) $emails[] = $user['email'];
    		return implode(' ', $emails);
    	}
    Ceci ne change rien j'ai toujours le même message d'erreur

    Erreur SMTP : Les destinataires suivants sont en erreur :
    monmail@mail.com monmail2@gmail.com

  15. #15
    Membre régulier Avatar de daajack
    Inscrit en
    Octobre 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 97
    Points : 97
    Points
    97
    Par défaut
    Ceci ne change rien j'ai toujours le même message d'erreur
    Ben non...
    Je t'avertis c'est pas censé résoudre ton problème, c'était juste pour te montrer ma culture infinie...
    ...alors forcément.

    T'as essayer ',' et ';' ?

  16. #16
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    pour l'instant sa a l'air de fonctionner avec ';'
    je vous remercie grandement
    mes cheveux blanc peuvent s'en aller

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

Discussions similaires

  1. [Mail] Envoi email avec image
    Par feldene dans le forum Langage
    Réponses: 1
    Dernier message: 15/07/2009, 09h15
  2. optimisation envoi newsletter avec phpmailer
    Par p_m_g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 27/05/2009, 12h56
  3. Envoi multiple avec Cadaver (client webdav)
    Par divot dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 05/11/2008, 11h46
  4. envoi multiple avec mailto
    Par ludojojo dans le forum C++Builder
    Réponses: 1
    Dernier message: 06/06/2008, 16h11
  5. [Mail] Envoi email avec php
    Par laymounos dans le forum Langage
    Réponses: 8
    Dernier message: 01/06/2006, 14h31

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