Envoi d'emails en masse - PHP - Programmation
Marsh Posté le 28-09-2017 à 17:23:56
Le problème est que je n'arrive pas à faire arrêter le script au bout de 100 mails envoyés pendant 10 secondes et ensuite reprendre l'envoi pour les mails auxquels je n'ai pas fait d'envoi.
Marsh Posté le 28-09-2017 à 22:03:44
C'est à dire qu'il ne rentre jamais dans
Code :
|
?
Marsh Posté le 29-09-2017 à 09:51:42
Oui c'est exactement.
Je souhaiterais savoir, qu'est-ce qui ne va pas dans mon code ?
Je n'ai pas de message d'erreur et l'envoi se passe bien. C'est juste qu'il ne prend pas en compte la condition suivante :
Code :
|
Marsh Posté le 29-09-2017 à 23:21:28
L45, je pense que tu voulais mettre $nbr++; et non juste $++;
T'incrémente jamais $nbr. L'erreur classique
Edit : au passage, pourquoi faire un sleep de 10s et pas juste exécuter le script en envoyant 100 mails et le relancer quelques secondes plus tard avec cron ?
Marsh Posté le 30-09-2017 à 00:12:23
En effet la ligne 45 reste mystérieuse, par contre je ne vois pas l'intérêt d'incrémenter $nbr Rufo.
Mecano31, comment sais-tu qu'il ne fait pas la pause?
Marsh Posté le 30-09-2017 à 09:32:24
Effectivement, j'avais pas vu que $nbr était défini L7.
Marsh Posté le 30-09-2017 à 20:07:52
Bonjour,
Merci à tous pour vos réponses.
@MaybeEijOrNot, pour répondre à ta question, quand j'envoie les 100 premiers emails ça passe mais après je n'ai rien d'autre.
Peut être faut-il que je réexecute le code à nouveau pour qu'il sache envoyer le reste de mails ? Si c'est le cas comment lui dire à partir de quel compteur recommencer l'envoi ? Est-ce que possible de le faire automatiquement sans rechargement de la page ?
Merci !
Cdlt,
Marsh Posté le 30-09-2017 à 20:22:00
Ok donc en fait ça n'a probablement rien à voir. Je penche plus vers un temps d’exécution trop long, dans le php.ini tu dois avoir un temps d’exécution de paramétré, si le script mais plus de temps alors il est abandonné.
Par contre, quoi qu'il en soit, d'après les notes de php.net : http://php.net/manual/fr/function.mail.php tu ferais mieux d'utiliser une library spécialisée pour l'envoie de masse de mails.
Marsh Posté le 30-09-2017 à 20:39:04
Concernant le librairie j'ai pensé à Swiftmailer. C'est une librairie bien adaptée pour l'envoi d'une liste de distribution.
Je vais étudier cette librairie et je reviendrai en cas de question. Par contre, même avec une librairie, il faut programmer pour que à partir d'un certain nombre d'emails envoyés, mettre de une pause puis reprendre.
Ou bien n'a-t-on besoin de pause avec une librairie ? Peut-on envoyer autant d'emails sans interruption dans ce cas ?
Marsh Posté le 30-09-2017 à 21:33:11
Aucune idée, à voir ce qu'ils conseillent dans la doc de la library. En général je pense que tu fais plus un découpage par tas au niveau de la requête pour la bdd.
Je partirai plus vers un script récursif ce qui permet de découper aussi bien les requêtes que les envois.
Sinon quelques recherches Google t'en diront plus. Bon là c'est un cas extrême mais dans les réponses tu as pas mal d'éléments apportés : https://stackoverflow.com/questions [...] ils-weekly
Marsh Posté le 01-10-2017 à 18:27:48
J'utilise une technique similaire pour l envoi de mails. J'utilise une table dans ma base de données avec une colonne indiquant si le mail a bien été envoyé. Comme ça lors de la nouvelle exécution, ma requête ne s'attarde que sur les mails non envoyés
Marsh Posté le 01-10-2017 à 20:23:24
T'utilises quel SMTP pour l'envoi. Moi, je rencontre souvent des pbs d'envois bloqués par 1&1 ou free.fr, sans doute parce que je dépasse des quotas (mais j'ignore leurs métriques, peut-être 100 mails/h ou 500 mails/jour ?). J'ai fiat un système dans mon appli qui retente l'envoi un certain nb de fois durant une certaine période tant que le mail n'a pas réussi à être envoyé.
Je fais l'envoi depuis un Nas Synology. Mais je maîtrise pas les aspects SPF, DKIM, PTR Je sais pas trop comment ça se configure...
Marsh Posté le 01-10-2017 à 23:15:48
@rufo, j'utilise aussi notre propre SMTP.
@antac,
Citation : J'utilise une technique similaire pour l envoi de mails. J'utilise une table dans ma base de données avec une colonne indiquant si le mail a bien été envoyé. Comme ça lors de la nouvelle exécution, ma requête ne s'attarde que sur les mails non envoyés |
Comment tu fais la nouvelle exécution ? Est-ce à la main ou automatiser ?
Marsh Posté le 02-10-2017 à 10:10:46
C'est automatisé (tâche planifiée), les e-mails sont envoyés par vagues. Toutes les 15 minutes, ma tache planifiée exécute le script qui envoi la sauce si il y a des mails en attente à envoyer par lot de 100 avec 50s d'attente entre chaque lot.
Marsh Posté le 02-10-2017 à 12:11:43
Question bête (désolé le squat) : comment fait-on pour mettre en place son propre SMTP ? Moi, actuellement, je dois passer par Free ou 1&1. Comment fait-on pour avoir le droit d'émettre des mails ?
Merci
Marsh Posté le 02-10-2017 à 13:04:06
Il suffit d'avoir un logiciel ou un serveur de messagerie (c'est notre cas).
Marsh Posté le 03-10-2017 à 09:52:05
Je pense que c'est surtout ce point qui m'intéresse mais dur quand on ne s'y connaît pas trop dans ce domaine
Marsh Posté le 03-10-2017 à 12:54:12
Quand j'ai démarré avec postfix + cyrus, j'ai lu pas mal de doc et trouvé plein d'infos/tuto sur le net.
On m'avait conseillé de mettre en place SPF + DKIM ce que j'ai fais. Ce n'est pas très compliqué.
Par contre le système est vraiment touffu est customisable à tous les niveaux. Quand on veut sortir un peu des sentiers battus il faut y passer pas mal de temps.
Il m'a fallu un week end antier pour passer à une authentification et gestion des boites mail LDAP.
Marsh Posté le 03-10-2017 à 13:24:10
Je vois. L'ennui c'est qu'il faut que la solution marche sur un NAS Synology (donc prendre en compte les éventuelles limitations).
Pour trop squatter ce topic, j'en ai ouvert un ici : http://forum.hardware.fr/forum2.ph [...] =0#t993066
Marsh Posté le 03-11-2017 à 08:57:45
J'ai eu ce même problème avec l'envoi de newsletter pour mon 1er blog.
Marsh Posté le 28-09-2017 à 16:32:42
Bonjour à tous,
Je suis en train de réaliser un système d'envoi de newsletter pour une liste de distribution.
L'envoi marche bien, le seul souci est de mettre un arrêt de 10 seconde au bout de (100 emails envoyés par exemple) et ensuite reprendre l'envoi pour la suite.
Je vous mets ci-dessous mon code avec l'exemple.
Merci pour votre aide !