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] Envoyer un e-mail avec des interruptions


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut [Mail] Envoyer un e-mail avec des interruptions
    Bonjour à tous,
    J'ai une question relativement simple sur l'envoi des emails,
    Un envoi multiple est très simple à mettre en place avec la class PHPmailer avec la récupération des adresse via un fetchAll de PDO.
    Cependant je souhaite faire la même chose mais avec une interruption entre chaque email.
    Car envoyer 500 mails en une fois est considéré comme du spam et en plus indique toutes les adresse dans le mail ce qui ne m'enchante pas du tout.
    Peut on alors effectuer un envoi multiple avec une interruption ?
    Je suppose qu'au lieu d'utiliser un fetchAll() il suffit de faire un fetch() tout court et une boucle while avec les adresse mails + une fonction d'interruption je pensais à sleep() mais bon quel est la meilleur façon de procéder?
    Je n'aurai jamais plus de 800 mails de toute façon

  2. #2
    Nouveau candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Par défaut
    Tu as raison, il suffit de mettre une boucle avec un for, un while ou quoi que ce soit

    Une fois que tu arrives à $nbLimiteMail tu fais un sleep(x seconds); et tu remet ton compteur de limiteMail à 0....
    Et ceux jusqu'à ce que ton nombre de mail à envoyer soit égal à celui envoyer par le serveur (deuxième compteur)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    En général j'implémente directement le tableau passer préalablement dans un foreach pour plus de faciliter avec un fetchAll de PDO.
    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
    function loadUsersFrontend(){
     
    		global ************
    			$dbh = new PDO(********************);
    			$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    			$stmt = $dbh->prepare("SELECT id, email from db_mailer where id ORDER BY id");
    			$stmt->setFetchMode(PDO::FETCH_ASSOC);
    			$stmt->execute();
    			$result = $stmt->fetchAll();
    			$stmt->closeCursor();
    			$stmt = null; 
    		return $result;
    	}
    function loadMail(){
    		$emails = Array();
    		foreach ($this->loadUsersFrontend() as $user) $emails[] = $user['email'];
    		return implode(';', $emails);
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->AddAddress($this->loadMail());
    MAis ici je doit m'y prendre autrement, cependant utilisez fetch m'oblige a demander à php de commencer toujours depuis le premier enregistrement sinon il me retournera systématiquement le dernier sachant que les enregistrement ne sont jamais les même vu qu'ils doivent être selectionner via une requête de tri préalable pour par exemple envoyer un mail à une catégorie de personne bien spécifique.
    Bref quelques conseils semble les bienvenus pour voir si je suis dans le bon ;-)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Pourriez-vous me donner un exemple pour créer une mailling list avec un arrêt entre chaque envoi vers une adresse ???
    Car je ne vois pas trop l'idée du compteur

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    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
     
     
    // Tableau contenant les adresses mail
    $mails = array();
     
    // Nombre de mails qu'on veut envoyer chaque seconde
    $nbMailsParCycle= 150;
     
    // Temps à attendre entre chaque fournée
    $delai = 60;
     
    $nbEnvoye = 0;
     
    foreach ($mails as $mail)
    {
        if ($nbEnvoye == $nbMailsParCycle)
        {
            $nbEnvoye = 0;
            sleep($delai);
        }
     
    // Envoi du mail
    // ...
     
    $nbEnvoye++;
     
    }

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Je me suis peut être embrouiller mais cela ne fonctionne pas.
    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
    function loadMailPartenaires(){
    		$emails = array();
    		// Nombre de mails qu'on veut envoyer chaque seconde
    		$nbMailsParCycle= 1;
    		// Temps à attendre entre chaque fournée
    		$delai = 1;
    		$nbEnvoye = 0;
    		$dbparts = new dbPartenaires();
    		foreach ($dbparts->selectPartByMail() as $pemails => $sendmails){
    		    if ($nbEnvoye == $nbMailsParCycle){
    		        $nbEnvoye = 0;
    		        sleep($delai);
    		    }
    		    $emails[] = $sendmails['partenairesemail'];
    		$nbEnvoye++;
    		}
    	return $emails;
    		//implode(';', $pemails);
    	}
    Dois je récupérer tous les emails puis ensuite faire un envoi un à un ou récupérer les emails un à un??

    Je récupère les emails de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function selectPartByMail(){
    		global ****************************
    			$dbh = new PDO($****, $*****, $********);
    			$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    			$stmt = $dbh->prepare('SELECT partenaires.link_id, partenaires.email AS partenairesemail, clients.link_id, clients.email AS clientsemail FROM partenaires JOIN clients ON (partenaires.link_id = clients.link_id) WHERE partenaires.link_id = :link_id');
    			$stmt->bindParam(':link_id',$this->getlink_id);
    			$stmt->setFetchMode(PDO::FETCH_ASSOC);
    			$stmt->execute();
    			$result = $stmt->fetchAll();
    		return $result;
    	}
    Sa coince un peux pour la manière d'envoyer un mail toutes les x microsecondes avec un arrêt obligatoire entre chacun.
    Je pense que mon code envoi tout apres x temps sans certitude et puis c'est peut être pas bien optimisé

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/08/2009, 09h55
  2. Réponses: 5
    Dernier message: 06/12/2008, 09h32
  3. [Mail] Envoyer un e-mail avec images incorporées
    Par guigo dans le forum Langage
    Réponses: 6
    Dernier message: 24/01/2008, 16h42
  4. [Mail] Envoyer un e-mail à l'aide de PHP
    Par Yepes dans le forum Langage
    Réponses: 8
    Dernier message: 18/09/2007, 21h55
  5. [Mail] Comment garder les mails envoyés?
    Par JSuper_Kitten dans le forum Langage
    Réponses: 5
    Dernier message: 16/10/2005, 14h00

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