Vous n'êtes pas connecté - 0 membre connecté
Catégories
Graphisme
Flash (51)
Print (66)
Programmation
PHP (66)
ASP (2)
CSS (26)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (261)
933 Sujets
12337 Réponses
Programmation > PHP > Envoi newsletter
Envoi newsletter
Bonjour les communautaires ! ^^

Je développe actuellement un gestionnaire de newsletter pour l'espace administration du site d'un client.

Pour l'envoi, je vais chercher les adresses dans une base MySQL suivant le principe suivant :

// lecture des adresses pour l'envoi
$sql= "SELECT * FROM ...
$req=mysql_query($sql);
WHILE ($data=mysql_fetch_array($req) ) {
// envoi du message à l'adresse donnée
}


Cela fonctionne correctement avec quelques adresses mais mon client souhaite utiliser cela avec une table de plus de 5000 contacts.

Cela va-t'il encore fonctionner ? Je me doute que la page web ne va donner aucun signe de vie pendant l'envoi et que cela peut prendre un moment mais cela fonctionnera-t'il néanmoins ?

J'ai vu que certaines routines traitent les mails par paquets ... pourquoi ?

Dernière question... est-il concevable d'ajouter sur la page une sorte de compteur qui donne une idée de la progression de l'envoi ?
A chaque envoi, si je fais par exemple un echo $compteur_email.'/'.$total_ema il, je peux avoir une idée de la progression mais ma page défile et je me retourve avec toute une liste indigeste... est-il possible via un artifice quelconque d'afficher cela sous forme d'un info mis à jour à chaque envoi ce qui simulerai un compteur ? (du javascript ou une iframe... j'avoue sécher sur le sujet)

D'avance merci pour vos éclairages.

PS : Administrateurs, lorsque je mets mon bout de code entre balises [code] [/code] cela me mange une partie du texte qui suit.
Posté le 23 11 2006 à 12h36
askhanir - Membre - www

Réponses - Envoi newsletter
<< 1 2 >>
5000 mail d'un coup a mon avis le serveur risque de faire la gueule voire meme de les bloquer.

Pour ce qui est de l'affichage tu peu a mon avis si j'ai bien compris le sujet ainsi quel a technologie employer une application AJAX qui va t'afficher ce que tu veux pendant que par derriere (non maaS) elle discute avec le serveur pour executer le script.

Pour ce qui est de ton envoi, l'envoi par paquet marche a mon avis (toujours si j'ai bien compris) comme le multipage pour un forum, pour eviter de tout avoir a traiter d'un coup.

Je ne sais pas si ce que je te dis t'eclaire un peu mais voila ce que j'en pense.

Je ne connais pas AJAX mais je pense qu'il est possbile de faire avec une sortie de barre de "loading" si c'est l'effet desiré,.
Pour l'envoi de mails en masse essaie de contacter Bob l'éponge il me semble qu'il connait le sujet. mais a mon avis passer par paquet me semble obligatoire ou pourquoi avec des taches automatisé via crontab

EDIT : je te parle de tout ca mais je ne dis pas que je sais le faire mais il me semble qu'avec ces methode on peu y arriver ceci dit je n'ai jamais experimenté
Posté le 23 11 2006 à 13h43
Narno - Modérateur - www
Le temps d'execution maximum d'un script PHP sur un serveur est de +/- 30 secondes, ce qui devrait poser un problème le temps d'arriver à 5000 mails... D'après la documentation PHP :

Note : Il est important de noter que la fonction mail() n'est pas conseillée pour traiter de gros volumes de mails dans une boucle. Cette fonction ouvre et ferme un socket SMTP pour chaque mail, ce qui n'est pas très efficace.

Pour envoyer de gros volumes de mails, reportez-vous aux paquets PEAR::Mail et PEAR::Mail_Queue.


C'est déjà une piste. ;)
Posté le 23 11 2006 à 15h24
Ishiro - Membre - www
hummm... Et en mettant les adresses en Bcc ? Du coup tu n'envois plus qu'un seul mail à XXXXX destinataires ?
L'autre solution si tu veux être sûr que ton script aille au bout c'est de modifier le temps max d'exécuttion des scripts de ton serveur ^^
Posté le 23 11 2006 à 15h46
benzor - Administrateur - www
Si tu met les copiesen BCC tout le monde recevra le mail certes mais avec comme destinataire le premier de liste non?

du genre si la liste est la suivante
- Paul
- Henri
- José
- Victor
- Ernest

Tout le monde recevra le mail mais Henri, José, Victor et Ernest auront comme destinataire Paul non ??
Posté le 23 11 2006 à 16h13
Narno - Modérateur - www
 Tout le monde aura comme destinataire l'adresse de ton choix, celle que tu mets en 1er argument de ta fonction mail... donc c'est bien de mettre une adresse bidon ou mieux, l'adresse à laquelle il faut répondre pour se désinscrire de la NL, genre unsubscribe@tondomaine.com... Le seul inconvénient de cette solution, c'est que tu ne peux pas personnaliser le mail genre "Bonjour mr GrandJean etc..." pour chaque mail, si tu as ces infos dans ta base de destinataires... enfin j'me comprends ^^

EDIT : Personnelement, j'utilise la classe PHPMailer, très pratique, complète et bien codée...
Par exemple voici ce que ca me donne pour envoyer les Notifs de benzor.com :

<?
    $_mail 
= new PHPMailer();
    
$_mail->WordWrap 70;
    
$_mail->IsHTML(true);     
    
$_mail->From "notification@benzor.com";
    
$_mail->FromName "Notification benzor.com";
    
$_mail->AddAddress("notification@benzor.com","Membres benzor.com");        
    
$_mail->Subject "Notification benzor.com - ".$sujet;
    
$_mail->Body StripSlashes($mail);
    
$_mail->AltBody Strip_tags(Str_Replace("<br>","n",$message));
    if(!empty(
$Bcc))
    {
        foreach(
$Bcc as $destinataires$_mail->AddBCC($destinataires);
    }
    
$_mail->IsSendmail();
    
$_mail->Send();
    
$_mail->ClearAllRecipients();
?>
$Bcc c'est mon tableau de destinataires et $message mon mail mis en forme en HTML...
Posté le 23 11 2006 à 17h16
benzor - Administrateur - www
benzor > Le problème c'est que le message comporte un lien cliquable pour désinscription du destinataire. Je ne peux donc pas travailler avec des messages en copie. Mais je retiens la leçon car cela pourrait servir un jour. A ce propos, PHPMailer nécessite-t'il une install côté serveur ? (moi j'utilise la classe mime_mail)
Posté le 24 11 2006 à 13h18
askhanir - Membre - www
et si ton lien clicable amene sur un formulaire ou l'inscrit doit saisir l'adresse qu'il veut desinscrire ca peut resoudre le probleme non?
Posté le 24 11 2006 à 13h30
Narno - Modérateur - www
askhanir > non pas du tout, PHPMailer c'est juste une classe à inclure :) Sinon tu as accès au php.ini de ton serveur ? car dans ce cas là tu change la variable max_execution_time, c'est ce que j'ai fais au bureau pour les routages de mailing... J'ai déjà envoyé des paquets de 6000 mails sans problèmes (le script tourne une minute ou deux).
Posté le 24 11 2006 à 15h13
benzor - Administrateur - www
 benzor> ok... j'ai testé phpmailer ! Envoi ok mais je galère avec un envoi de pièce jointe. J'ai le message d'erreur suivant : Language string failed to load: file_access

Voici mon code (la pièce jointe est choisie via un input de type file) :


if (($userfile!="none") AND ($userfile_size!=0))
        {
            $fichier=stripslashes($userfile);
            $fichier=fread(fopen("$fichier", "r"), filesize("$fichier"));
            $nomok = str_replace(" ", "_", $userfile_name);
            $mail->AddAttachment($fichier, $nomok); 
        }
Posté le 24 11 2006 à 22h46
askhanir - Membre - www
 Hummm pourquoi tu fais un fread de ton fichier ?
Si il provient d'un input type file il te suffit de faire ça (en admettant que ton input type file ai comme name="tonFichier") :


<?
if(is_uploaded_file($_FILES['tonFichier']['tmp_name']))
{
    
$nomOk Str_Replace(" ""_"$_FILES['tonFichier']['name']);
    
$mail -> AddAttachment($_FILES['tonFichier']['tmp_name'], $nomOk);
}
?>
Posté le 25 11 2006 à 11h00
benzor - Administrateur - www
<< 1 2 >>
Sujets PHP
<< 1 2 3 4 5 6 7 >>
[résolu] mySQL & css
Auteur : geoffroy
Posté le 06 02 2007 à 15h00
11 Réponses (Nouveau sujet)
Sujet visité 823 fois
[Résolu] Mysql et (...)
Auteur : aguenard
Posté le 04 02 2007 à 17h25
3 Réponses (Nouveau sujet)
Sujet visité 952 fois
localisation
Auteur : senkante
Posté le 28 01 2007 à 17h20
9 Réponses (Nouveau sujet)
Sujet visité 1349 fois
PHP / XML
Auteur : benzor
Posté le 21 01 2007 à 12h11
21 Réponses (Nouveau sujet)
Sujet visité 1723 fois
Programme PHP
Auteur : caniche
Posté le 16 01 2007 à 08h05
43 Réponses (Nouveau sujet)
Sujet visité 1463 fois
CMS Multi Site et (...)
Auteur : Narno
Posté le 26 01 2007 à 12h28
6 Réponses (Nouveau sujet)
Sujet visité 1193 fois
HTACCESS - URL (...)
Auteur : Narno
Posté le 12 07 2006 à 16h29
14 Réponses (Nouveau sujet)
Sujet visité 1033 fois
[Résolu] URL (...)
Auteur : mob
Posté le 14 01 2007 à 00h52
10 Réponses (Nouveau sujet)
Sujet visité 995 fois
Free - Internal (...)
Auteur : Narno
Posté le 22 12 2006 à 11h19
7 Réponses (Nouveau sujet)
Sujet visité 1043 fois
Offre CDI - (...)
Auteur : McFly
Posté le 12 01 2007 à 18h54
0 Réponse (Nouveau sujet)
Sujet visité 610 fois

Sujet bloqué
<< 1 2 3 4 5 6 7 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006