Envoyer des emails en masse avec PHP

Eléphanteau du PHP | 38 Messages

24 avr. 2011, 09:56

Bonjour,

Tout d'abord merci pour ce site et ce forum où je viens depuis des années... aujourd'hui je me suis inscris pour poser une question.

Je suis en train de créer un script pour envoyer des emails en masse, en fait un service de "newsletter" permettant aux membres de mettre un formulaire sur leur site etc.
Bref ma question est d'après vous est-ce que la fonction "mail()" est suffisante?
Quelles seraient les règles pour éviter que les services de webmail (gmail, hotmail, yahoo etc.) ne blackliste mon service?!
-> En sachant que le but serait de rendre obligatoire un double opt-in...

Merci beaucoup pour votre aide...

ViPHP
ViPHP | 5462 Messages

24 avr. 2011, 12:24

Bref ma question est d'après vous est-ce que la fonction "mail()" est suffisante?
c'est marqué dans la doc :

http://php.net/manual/fr/function.mail.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.

Eléphanteau du PHP | 38 Messages

24 avr. 2011, 16:34

Merci pour la réponse efficace, par contre je ne connais pas le framework pear, y aurait-il une doc française ou la possibilité d'avoir plus d'info sur l'envoi de mail en masse?
Je voudrais faire les choses bien si possible :D

Encore merci.

devlop78
Invité n'ayant pas de compte PHPfrance

24 avr. 2011, 19:10

Oui enfin c'est plus complexe que ça. mail() n'est pas approprié si on tient compte d'un nombre important de mails. Mais la problématique va plus loin : il parait qu'il ne faut pas envoyer trop de mails d'un coup. Comme tu l'as suggéré, ce serait mauvais pour son image aux yeux des anti spam ;)

Et effectivement, c'est là que PEAR Queue Mail peut intervenir. Sinon, une table avec des adresses emails, un champ boolean "envoyé" et un script php avec un cron tous les 5 minutes qui en envoie par quinzaine avec PHPMailer par exemple (par SMTP donc 1 connexion pour l'ensemble).

Finalement, la question principale n'est pas combien de secondes tu vas pouvoir gagner à chaque newsletter mais comment éviter d'être vu comme un spammeur ...

ViPHP
AB
ViPHP | 5818 Messages

24 avr. 2011, 19:31

Faut voir aussi ce que tu appelles "emails en masse". Par exemple chez OHV tu peux envoyer jusqu'à 500/1000 mail par jour avec la fonction mail() de php sur un hébergement mutualisé.

Eléphanteau du PHP | 38 Messages

24 avr. 2011, 19:39

C'est exactement ça devlop78, car si une personne à une base de 2000 contacts et souhaite envoyer un mail à ces 2000 contacts ça ne peut pas être étalé sur 11 heures!...
D'où ma question, comment faire pour que les antispams comprennent que ce n'est pas du spam (optin toussa)...
AB je pense que mail() n'est pas approprié... par "emails en masse" j'entends des personnes succeptibles d'envoyer 2000/3000 emails et ça plusieurs fois par jour (plusieurs personnes)...

Merci pour votre aide.

devlop78
Invité n'ayant pas de compte PHPfrance

24 avr. 2011, 23:43

Ouai enfin je disais surtout que la problématique n'était pas de savoir si on allait utiliser des ouvertures multiples de sockets, ou si on allait utiliser SendMail ou Postfix ... Renseigne toi sur google sur le nombre d'emails que tu peux envoyer d'un coup avant d'être mal vu, finalement, le reste c'est du chipotage, faire un script Mail Queue soit même ne prend que 15 minutes

Eléphanteau du PHP | 38 Messages

25 avr. 2011, 07:20

C'est tout à fait la question que je pose dans mon premier message :
Quelles seraient les règles pour éviter que les services de webmail (gmail, hotmail, yahoo etc.) ne blackliste mon service?!
Je me disais que certainement des membres du forum avaient du avoir la même problématique.
Et sur ce coup Google n'est pas mon ami...

Encore merci :)

devlop78
Invité n'ayant pas de compte PHPfrance

26 avr. 2011, 01:15

Oui j'avoue. En attendant, si tu as le choix, tape large : quelques e-mails toutes les 15 minutes, ou quelque chose comme ça ;) Ou alors tu fais la sentinelle, tu tentes et dès que tu te fais bloquer tu nous dis à combien t'étais :P

Eléphanteau du PHP | 38 Messages

26 avr. 2011, 06:46

Il est évident que je vous tiens au courant. D'après ce que j'ai pu lire, faire des pauses ne change rien car les fournisseurs d'accès font des statistiques glissantes...
Donc une campagne d'e-mails même si elle se découpe sur plusieurs heures sera comptabilisé comme une seule et même campagne!

Je vais faire mon petit script tester et tester ;)

Bon si quelqu'un maîtrise bien pear je suis preneur! Je pense que le smtp est le plus approprié.

Encore merci...

ViPHP
ViPHP | 2577 Messages

26 avr. 2011, 10:38

Bonjour,

Le classement en spam dépend de nombreux paramètres. Je ne pense pas que ces paramètres soient public car cela pourrait être utilisé par les spammeurs. Il est probable que les règles évoluent constamment en fonction des méthodes utilisées par les spammeurs.

Il m'est arrivé de retrouver en spam un mail envoyé à 10 personnes seulement. Je suppose que cela était du à un envoi à l'expéditeur avec les destinataires en copie cachée. L'expéditeur était une adresse professionnelle ne pratiquant pas le spam.

Eléphant du PHP | 92 Messages

26 avr. 2011, 10:44

Hello,

Moi j'en ai déjà codé des scripts d'envoi en masse.

Le truc pour pas être vu comme spammeur est surtout une question de header/DNS (du moins à l'époque où j'ai fait ce job).
Il faut que Google par exemple soit capable de faire un reverse DNS sur ton domaine et qu'il trouve bien les bonnes infos en face, sans quoi il va te mettre direct dans les spams (Google t'en diras plus que moi à ce sujet, ça fait trop longtemps...).
Pour les SMTP qui vont te relayer et qui seraient susceptibles de te "black lister" c'est pareil. Si tu envois tes mails depuis une adresse IP plutôt qu'un domaine tu risques de subir le même traitement.
Pour ce qui est de PEAR::Mail_Queue, je ne connais pas (mais je prends bonne note de l'existence de cette chose ^^) ce que j'avais fait c'était avec du JS qui rechargeait une page et faisait un envoi de 10/15 mail par affichage avec la fonction mail()
Programmer c'est 20% de syntaxe pour 80% de réflexion et dans les 20% de syntaxe il faut encore compter une bonne dose de réflexion...
Je vous donne des conseils, pas des solutions toutes faites...

Petit nouveau ! | 1 Messages

11 oct. 2011, 11:38

Faut voir aussi ce que tu appelles "emails en masse". Par exemple chez OHV tu peux envoyer jusqu'à 500/1000 mail par jour avec la fonction mail() de php sur un hébergement mutualisé.
Salut tout le monde,
je ressuscite ce post car je voudrais confirmation de qu'annonce AB ci-dessus.

Je suis en train de développer un petit module de gestion de newsletter en php tout simple pour un restaurant. A mon avis le nombre d'inscrit sera bien en dessous des 1000 adresses. Novice en php, c'est la 1ere fois pour moi que je fais ce genre de module. Avant de me lancer dans le code, vous me confirmez que si je pars sur une fonction mail() toute simple, je n'aurai pas de souci ?

Par contre j'ai cru comprendre qu'il fallait émettre depuis un nom de domaine et non pas depuis une adresse IP, pour éviter d'etre blacklisté. Dans le php.ini, cela se traduit comment ?

merci pour vos lumières

Avatar du membre
Mammouth du PHP | 1564 Messages

16 févr. 2021, 02:39

Quelles sont les méthodes en 2021 pour envoyer beaucoup de mails d'un coup (disons 1000), sans être blacklisté SVP ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 févr. 2021, 09:59

En vrac ;
- Respecter SPF+DKIM
- Respecter la volonté des utilisateurs qui se désinscrivent afin de limiter les signalements en tant que spam
- Utiliser une IP "propre", c'est-à-dire dédiée et que tu maitrises parfaitement (y compris son historique) et qui n'est pas blacklistée. Dans l'idéal panacher avec plusieurs IP propres.
- Mettre un petit délai pour envoyer chaque mail (par exemple 1 par seconde)


Si l'envoi de mails est important pour toi, le mieux est de passer par des plateformes spécialisées telles que Mailjet ou Mailchimp... dont c'est le boulot et qui simplifie grandement cela tout en assurant un suivi.
Quand tout le reste a échoué, lisez le mode d'emploi...