54 votes

L'envoi de courriel de masse à l'aide de PHP

Je suis en train d'écrire une musique blog. L'administrateur postes un nouvel article tous les 2-3 jours. Une fois que l'administrateur publie un article, d'un courriel de masse sera envoyé à près de 5000 abonnés immédiatement.

Quelle est la meilleure façon de mettre en œuvre la masse fonctionnalité de courrier?

La fonction suivante de travail?

function massmail() 
{
  $content = '...';
  foreach ($recipients as $r) {
    $_content = $content . '<img src="http://xxx/trackOpenRate.php?id='.$r.'">';
    mail($r, 'subject', $_content);
  }
}

Une autre question: Si tous les 5000 abonnés à l'aide de Yahoo Mail, Yahoo va la traiter comme une attaque DDOS et de bloquer l'adresse IP de mon serveur SMTP?

49voto

Extrakun Points 8024

Tout d'abord, à l'aide de la fonction mail() qui vient avec PHP n'est pas une solution optimale. Il est facilement marqué comme spam, et vous devez configurer l'en-tête pour s'assurer que vous envoyez des e-mails HTML correctement. Quant à savoir si l'extrait de code de travail, il le ferait, mais je doute que vous obtiendrez le code HTML à l'intérieur d'elle correctement sans spécification des en-têtes supplémentaires

Je vais vous suggérons de prendre un coup d'oeil à SwiftMailer, qui a HTML, le soutien pour les différents types de mime et de l'authentification SMTP (ce qui est moins susceptible de marquer votre mail comme spam).

37voto

bumperbox Points 6596

Je voudrais insérer tous les mails dans une base de données (comme une sorte de file d'attente), puis de les traiter un à un, comme vous l'avez fait dans votre code (si vous souhaitez utiliser swiftmailer ou phpmailer etc, vous pouvez le faire aussi.)

Après chaque mail est envoyé, mise à jour de la base de données afin d'enregistrer la date/heure de l'envoi.

En les mettant dans la base de données tout d'abord vous devez

  1. une trace de qui vous l'a envoyé
  2. si votre script de fois ou échoue et que vous devez l'exécuter à nouveau, puis vous ne finirez pas envoyer le même mail à des gens deux fois
  3. vous pouvez exécuter le processus d'envoi d'une tâche cron et de faire un lot à un moment, de sorte que votre serveur de messagerie n'est pas dépassée, et de garder trace de ce qui a été envoyé

Gardez à l'esprit, comment faire pour automatiser les courriels retournés ou non valides e-mails, de sorte qu'ils peuvent automatiquement supprimés de votre liste.

Si vous envoyez que de nombreux e-mails, vous êtes lié pour obtenir un peu de rebonds.

18voto

Michiel Buddingh Points 3437

Ce sont des conseils, pas de réponse: Vous êtes beaucoup, beaucoup mieux en utilisant dédié logiciel de liste de diffusion. mailman est souvent utilisé, par exemple, mais quelque chose d'aussi simple que de mlmmj peut suffire. L'envoi de mails de masse est en fait une tâche plus difficile qu'elle ne le semble. Non seulement devez-vous envoyer des e-mails, vous devez également garder une trace de la "mort" des adresses afin d'éviter que votre mail, ou pire, votre serveur de messagerie, marqué comme spam. Vous avez à gérer les gens se désabonner pour la même raison.

Vous pouvez mettre en œuvre ces choses vous-même, mais surtout de rebond de la manipulation est difficile et ingrat travail. À l'aide d'un gestionnaire de listes de diffusion va rendre les choses beaucoup plus facile.

Quant à la façon de faire votre e-mail d'un goût agréable pour yahoo, c'est une tout autre affaire. Pour tous ses défauts, ils semblent mettre de grand stock dans les SPF et la clé de domaine domainkey. Vous aurez probablement à mettre en œuvre, ce qui nécessite une coopération de votre administrateur de serveur de messagerie.

14voto

usoban Points 4015

Vous pouvez envisager d'utiliser CRON pour ce type d'opération. L'envoi en masse de courrier à la fois n'est certainement pas bon, il peut être détecté comme spam, protection contre les attaques ddos, le crash de votre serveur etc.

Donc CRON pourrait être une excellente solution, envoyer 100 mails à la fois, puis attendez quelques minutes, 100, etc.

8voto

Conrad Points 474

Pourquoi ne pas plutôt utiliser phplist? Il est également construit sur PHP Mailer et beaucoup de leaders de l'industrie sont à l'utiliser. Je l'ai utilisé moi-même un couple de fois à envoyer à l'envoi en masse de courriers à mes clients. La bonne chose à propos de phplist est que vous pouvez l'accélérateur de vos messages sur un domaine de niveau en plus d'un temps limite de niveau. Pour une liste complète des fonctionnalités de jeter un oeil à: http://www.phplist.com/details

Ce que nous avons également fait avec un couple de l'intérieur des systèmes de capture que nous avons eu a été de pousser notre base d'utilisateurs à la mailling liste et ensuite une entrée cron déclenchant un mail chaque jour. Les possibilités sont infinies, c'est génial à propos de l'open source!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X