Question

Quelle est la manière la plus appropriée d'envoyer un minimum de 1 000 e-mails ou plus en PHP ?Existe-t-il une technique de mise en file d'attente d'e-mails fiable capable de gérer cela ?­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Était-ce utile?

La solution

Vous pouvez simplement insérer vos e-mails dans une table de base de données de file d'attente de courrier et demander à un processus distinct de vérifier la file d'attente et d'envoyer par lots un certain nombre à la fois.

Autres conseils

Il existe une solution testée pour cela :POIRE File d'attente_Mail

Fonctionne bien pour moi.

comme mercutio l'a suggéré, j'insérerais un nouvel enregistrement dans une table de file d'attente de courrier pour chaque e-mail en attente d'envoi, puis j'utiliserais un processus distinct (comme un CRON) pour vérifier périodiquement la table pour tous les éléments en file d'attente.

si des e-mails sont en file d'attente (et que l'e-mail n'est pas personnalisé pour chaque destinataire), je regrouperais alors les e-mails par domaine et j'enverrais des blocs ensemble pour réduire le nombre total d'e-mails à envoyer, c'est-à-diresi vous avez 1 000 e-mails en file d'attente et que 250 sont destinés à des comptes Gmail, j'enverrais les 250 en 25 blocs de 10 (n'oubliez pas les destinataires en Cci pour éviter qu'ils ne se voient).

pour envoyer le courrier, j'utiliserais Courrier POIRE sur la fonction mail() de php

après l'envoi de l'e-mail, supprimez les enregistrements de la file d'attente ou modifiez un indicateur d'état pour indiquer qu'il a été envoyé et boucler - j'ajouterais également un compteur pour garder une trace des e-mails qui n'ont pas pu être envoyés et les supprimer après x tentatives infructueuses

Pour surmonter les problèmes de délai d'attente, je le ferais non plus, (selon la situation) - définissez le set_time_limit () sur x secondes et gardez le temps d'exécution du script (tuant le script après (x-1) secondes) - Appelez le script de la commande ligne pour éviter les délais d'expiration - définissez une limite au nombre d'e-mails que le script pourrait envoyer une seule exécution

Bien sûr, la table de base de données pourrait être une idée.Mais qu’en est-il de l’envoi de 1 000 e-mails avec une pièce jointe de 2 Mo ?il faudrait en tenir compte également.J'ai moi-même eu le problème et j'ai finalement eu recours à l'écriture du courrier électronique dans la base de données et des fichiers dans le système de fichiers.Le script de messagerie que j'ai utilisé a ensuite lu les enregistrements de la base de données et essayé de récupérer les pièces jointes à envoyer.

Etes-vous sûr de devoir mettre vous-même ce courrier en file d'attente ?

Livrez simplement tout le courrier à l'agent de transfert de courrier de la machine locale (sendmail...) et laissez-le s'occuper de la mise en file d'attente et de l'envoi.Après tout, c’est pour cela qu’il a été conçu.

Autrement dit:ne vous inquiétez pas pour ça !

Je me suis généralement appuyé sur un hack.J'ai une liste d'adresses e-mail dans une base de données, puis j'utilise une méta-redirection vers moi-même avec un paramètre "offset" croissant qui spécifie la ligne de la base de données que je suis.Les redirections de serveur posent problème car les navigateurs supposent que le temps nécessaire indique une boucle infinie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top