Wie versendet man wöchentlich 100.000 E-Mails? [closed]

Lesezeit: 10 Minuten

Wie versendet man wochentlich 100000 E Mails closed
xRobot

Wie kann man in PHP wöchentlich eine E-Mail an 100.000 Benutzer senden? Dies umfasst E-Mails an Abonnenten, die die folgenden Anbieter verwenden:

  • AOL
  • Google Mail
  • heisse Mail
  • Yahoo

Es ist wichtig, dass alle E-Mails tatsächlich zugestellt werden, soweit dies möglich ist. Offensichtlich würde das einfache Versenden der E-Mail nur zu Problemen führen.

Gibt es eine Bibliothek für PHP, die dies einfacher macht?

Wie versendet man wochentlich 100000 E Mails closed
Piskvor verließ das Gebäude

Kurze Antwort: Während es technisch möglich ist, selbst 100.000 E-Mails pro Woche zu versenden, ist dies die einfachste, leichteste und billigste Lösung diese auslagern an eine der darauf spezialisierten Firmen (I Tat Sagen Sie “am billigsten”: Es gibt keine Begrenzung für die Entwicklungszeit (und damit das Geld), die Sie beim Heimwerken darauf verwenden können).

Lange Antwort: Wenn Sie sich entscheiden, dass Sie unbedingt wollen Um dies selbst zu tun, bereiten Sie sich auf eine Welt voller Verletzungen vor (schließlich sprechen wir über E-Mail/E-Fail). Du brauchst:

  • E-Mail-Inhalt, der ist nicht Spam (andernfalls stoßen Sie bei jedem Schritt auf zusätzliche große Hindernisse, sogar rechtliche Konsequenzen)
  • Darüber hinaus sollten Ihre Inhalte einfach zu verstehen sein unterscheiden vor Spam – das kann in einigen Fällen etwas schwierig sein (ich habe gehört, dass ein bestimmtes Pharmaunternehmen E-Mails so gut wie aufgeben musste, da ihre Markennamen in Spams ziemlich häufig vorkommen).
  • einen eigenen konfigurierbaren SMTP-Server, der nicht zusammenbricht, wenn Sie 100.000 E-Mails darauf ablegen (der Upstream-Server Ihres ISP wird hier nicht ausreichen und Sie werden den ISP heftig unglücklich machen; wir haben zwei dedizierte Boxen verwendet)
  • einige Mail-Wrapper (z. B. PhpMailer, wenn PHP Ihr bevorzugtes Gift ist; mit PHPs mail() ist an sich schon schrecklich genug)
  • Ihre eigene Absenderfunktion in einer Schleife ausführen, die Mails erstellen und an den Wrapper weitergeben (beachten Sie, dass Sie möglicherweise auf die Speichergrenzen von PHP stoßen, wenn Ihre App ein Speicherleck aufweist; Sie müssen den Sendeprozess möglicherweise regelmäßig wiederholen oder noch besser , “E-Mails erstellen” und “E-Mails versenden” ganz entkoppeln)

Überraschenderweise war das der einfache Teil. Der schwierige Teil ist es tatsächlich zu senden:

  • Einige Server werden Sie sperren, wenn Sie zu viele E-Mails dicht beieinander senden, also müssen Sie Ihre Warteschlange mischen und beobachten (z. B. senden Sie eine E-Mail an [email protected], dann drei an andere Domains, erst dann eine weitere an [email protected] )
  • Sie müssen richtig haben PTR-, SPF-, DKIM-Einträge
  • Umgang mit Remote-Server-Timeouts, falsch konfigurierten DNS-Einträgen und anderen Nettigkeiten im Netzwerk
  • Umgang mit ungültigen E-Mails (und nein, Regex ist dafür das falsche Werkzeug)
  • Handhabung von Abmeldungen (viele legitime Newsletter wurden aufgrund vieler frustrierter Benutzer, die sich nicht in einem Schritt abmelden konnten und stattdessen “als Spam markieren” gewählt haben, als Spam umklassifiziert – die Spamfilter lernen, insbesondere bei großen E-Mail-Anbietern)
  • Handhabung von Bounces und Zurückweisungen (“keine solche Mailbox [email protected]”,”Mailbox [email protected] voll”)
  • Umgang mit Blacklisting und Entfernung von Blacklists (Sicher, Sie versenden keinen Spam. Einige Empfänger werden sich nicht so sicher sein – bei einer so großen Liste, es Wille passieren manchmal, egal welche Vorsichtsmaßnahmen Sie treffen. Einige Personen (z. B. Ihre nicht so skrupellosen Konkurrenten) könnten sogar so weit gehen, Ihre Mailings fälschlicherweise als Spam zu melden – das kommt vor. An Durchschnittdauert es Wochen, bis man von einer schwarzen Liste gestrichen wird.)

Und um das Ganze abzurunden, müssen Sie den rechtlichen Teil davon verwalten (verschiedene Gesetze auf Bundes-, Landes- und lokaler Ebene; und sogar verschiedene Gesetzesverwicklungen, wenn Sie außerhalb der USA senden (Hinweis: Sie haben keine Möglichkeit herauszufinden, ob joe @hotmail.com lebt in Südwest-Elbonien, dem Land mit den drakonischsten Antispam-Gesetzen der Welt)).

Ich bin mir ziemlich sicher, dass ich ein paar Köpfe dieser Hydra übersehen habe – bist du dir immer noch sicher, dass du das selbst machen willst? Wenn ja, gibt es eine weitere Welle, diesmal nur die lästigen Probleme, die mit dem Versenden einer E-Mail einhergehen. (Sehen Sie, SMTP ist ein Store-and-Forward-Protokoll, was bedeutet, dass Ihre E-Mail über viele SMTP-Server im Internet verteilt wird, in der Hoffnung, dass der nächste etwas näher am endgültigen Empfänger ist. Grundsätzlich gilt: Die E-Mail wird an einen SMTP-Server gesendet, der sie in seine Weiterleitungswarteschlange stellt und sie zu gegebener Zeit an einen anderen SMTP-Server weiterleitet, bis sie den SMTP-Server für die angegebene Domäne erreicht. Diese Weiterleitung kann sofort erfolgen , oder in ein paar Minuten, oder Stunden, oder Tagen, oder nie.) Daher werden Sie die folgenden Probleme sehen, von denen die meisten sowohl unterwegs als auch am Zielort auftreten können:

  • Die Remote-SMTP-Server möchten nicht mit Ihrem SMTP-Server kommunizieren
  • Ihre Mails werden als Spam markiert (<blink> ist nicht dein Freund hier, noch ist <font color=...>)
  • Ihre Mails werden Tage, sogar Wochen zu spät zugestellt (entgegen der landläufigen Meinung ist SMTP darauf ausgelegt, die Nachricht irgendwann in der Zukunft zuzustellen – nicht jetzt)
  • Ihre Mails werden überhaupt nicht zugestellt (bereits gesendet vom E-Mail-Server auf Hop #4, noch nicht gesendet vom Server auf Hop #5, der Server, der die Nachricht derzeit enthält, stürzt ab, Daten gehen verloren)
  • Ihre Mails werden unterwegs von einem hirntoten Server verstümmelt (dieser ist mit base64-Codierung einigermaßen lösbar, aber dann steigt die Größe und die E-Mail sieht aus eher verdächtig)
  • Ihre Mails werden zugestellt und die Empfänger scheinen sie nicht zu wollen (“Ich bin mir sicher, dass ich mich dafür nicht angemeldet habe, ich erinnere mich genau, was ich vor einem Jahr getan habe” (natürlich tun Sie das, mein Herr))
  • Benutzer mit verschiedenen Versionen von Microsoft Outlook und seinen Besondere Umgang mit Internet-Mail
  • Zauberlehrling-Modus (eine sich selbst verstärkende positive Rückkopplungsschleife – mit anderen Worten, automatisierte E-Mails als Antworten auf automatisierte E-Mails als Antworten an …; Sie Ja wirklich Ich möchte nicht derjenige sein, der das auslöst, da Sie das halbe Internet auf sich selbst verärgern würden)

und es wird sein dein Aufgabe, dies zu beheben und zu lösen (Hinweis: Sie können es meistens nicht). Die Leute, die ein seriöses Massenmailing-Geschäft betreiben, wissen, dass Sie es am Ende nicht lösen können, und dass sie es auch nicht lösen können – und sie haben die Gründe gut recherchiert, dokumentiert und skizziert (vielleicht sogar als Powerpoint-Präsentation). – komplett mit Sounds und coolen Übergängen – die Ihre Chefs verstehen können), da sie das schon millionenfach erklären mussten. Außerdem wissen sie bei Problemen, die eigentlich lösbar sind, sehr gut, wie man sie löst.

Wenn Sie sich nach all dem nicht entmutigen lassen und es immer noch tun möchten, tun Sie es einfach: Es ist sogar möglich, dass Sie einen besseren Weg finden, dies zu tun. Seien Sie sich jedoch bewusst, dass der Weg vor Ihnen nicht einfach sein wird – das Versenden von E-Mails ist trivial, die Zustellung schwierig.

  • @Piskvor: Wenn Sie Ihre E-Mails angemessen zeitlich festlegen, können Sie so viele versenden, wie Sie möchten. Probleme treten auf, wenn Sie zu schnell zu viele E-Mails versenden. Ich versende etwa 30.000 Newsletter-Mails an Abonnenten in einem Zyklus von 20 Mails pro Minute über einen ASP.Net-Cache-Callback. Es funktioniert jetzt seit über zwei Jahren und wird nie blockiert.

    – sajidnizami

    13. Oktober 2010 um 5:11 Uhr


  • @Syed Sajid Nizami: Ich erwähne das irgendwo in der zweiten Liste. Beachten Sie, dass die Ratendrosselung keine allumfassende Lösung ist, da der Versand Ihres Newsletters etwa 1500 Minuten (30000/20=1500, etwas länger als ein Tag) dauern würde. Bei 100.000 E-Mails sind das mehr als drei Tage, und bei größeren Mengen wären Sie mit einem Newsletter noch nicht fertig, wenn es an der Zeit wäre, einen anderen zu versenden.

    – Piskvor verließ das Gebäude

    13. Oktober 2010 um 6:57 Uhr

  • Wenn die E-Mails blockiert werden, wird der Server auf die schwarze Liste gesetzt, und mein Netzwerkadministrator hat dafür eine Benachrichtigung eingerichtet, und wir senden eine Anfrage, um den Server aus der schwarzen Liste zu entfernen.

    – sajidnizami

    17. Oktober 2010 um 12:44 Uhr

Die Leute haben MailChimp empfohlen, das ein guter Anbieter für Massen-E-Mails ist. Wenn Sie nach einem guten Anbieter für Transaktions-E-Mails suchen, kann ich Ihnen möglicherweise helfen.

In den letzten 6 Monaten haben wir vier verschiedene SMTP-Anbieter verwendet, um herauszufinden, welcher der beste ist.

Hier ist eine Zusammenfassung dessen, was wir gefunden haben …

AuthSMTP

  • Günstigste weit und breit
  • Keine Analyse/Berichterstattung
  • Kein Tracking für Öffnungen/Klicks
  • Hatte bei einigen Sendungen leichtes Zögern

Stempel

  • Sehr billig, aber nicht so billig wie AuthSMTP
  • Schönes Cpanel, aber kein Tracking bei Öffnungen/Klicks
  • Aktivitätsverfolgung auf Sendeebene, damit Sie eine einzelne gesendete E-Mail öffnen und sich ansehen können, wie sie aussah und die Zustelldaten.
  • Muss API verwenden. Das Senden per SMTP wurde kürzlich eingeführt, ist aber fehlerhaft. Beispielsweise haben wir festgestellt, dass Anführungszeichen (“) in der Betreffzeile entfernt wurden.
  • Es kann kein gewünschter Anhang gesendet werden. Muss auf der genehmigten Liste von Dateitypen und unter einer bestimmten Größe stehen. (10 MB glaube ich)
  • Erfordert eine festgelegte Liste von Absendernamen/-adressen.

JangoSMTP

  • Teuer im Verhältnis zu den anderen – teilweise mehr als das 10-fache
  • Hässliches Bedienfeld, aber großartiges Tracking von Öffnungen/Klicks mit Details auf E-Mail-Ebene
  • Hatte manchmal Zögern beim Versenden. Bei zwei Gelegenheiten dauerte es eine Stunde, bis Sendungen zugestellt wurden
  • Erfordert eine festgelegte Liste mit Absendernamen/-adressen.

SendGrid

  • Nicht ganz billig wie AuthSMTP, aber immer noch sehr billig. Viele Kunden können mit 200 kostenlosen Sendungen pro Tag auskommen.
  • Anständiges Cpanel, aber keine detaillierten Details zum Öffnen/Klick-Tracking
  • Viele API-Optionen. Optionen (Öffnungs-/Klickverfolgung usw.) können auf E-Mail-für-E-Mail-Basis individuell definiert werden. Eingehende (Antwort-) E-Mails können an unseren HTTP-Endpunkt gesendet werden.
  • Absolut kein Zögern beim Senden. Jede gesendete E-Mail landete fast sofort im Posteingang.
  • Kann von jedem Absender/Name/Adresse senden.

Fazit

SendGrid war am besten, Postmark belegte den zweiten Platz. Wir haben bei keinem der beiden ein Zögern bei den Sendezeiten festgestellt – in einigen Fällen haben wir mehrere hundert E-Mails gleichzeitig versendet – und beide haben den besten ROI, wenn man ein solides Feature-Set berücksichtigt.

Folgendes habe ich kürzlich in PHP auf einem meiner größeren Systeme gemacht:

  1. Der Benutzer gibt den Newsletter-Text ein und wählt die Empfänger aus (was eine Abfrage zum späteren Abrufen der E-Mail-Adressen generiert).

  2. Fügen Sie den Newsletter-Text und die Empfängerabfrage zu einer Zeile in der MySQL-Tabelle mit dem Namen *email_queue* hinzu

    • (Die Tabelle email_queue hat die Spalten „to“ „subject“ „body“ „priority“)
  3. Ich habe ein weiteres Skript erstellt, das jede Minute als Cron-Job ausgeführt wird. Es verwendet die SwiftMailer Klasse. Dieses Skript einfach:

    • sendet während der Geschäftszeiten alle E-Mails mit Priorität == 0

    • Senden Sie nach Geschäftsschluss andere E-Mails nach Priorität

Abhängig von den Host-Einstellungen kann ich es jetzt mit Standard-Swiftmailers-Plugins wie Antiflood und Throttle drosseln lassen …

$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(50, 30));

und

$mailer->registerPlugin(new Swift_Plugins_ThrottlerPlugin( 100, Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE ));

usw usw..

Ich habe es weit über diesen Pseudocode hinaus erweitert, mit Anhängen und vielen anderen konfigurierbaren Einstellungen, aber es funktioniert sehr gut, solange Ihr Server richtig eingerichtet ist, um E-Mails zu senden. (Funktioniert wahrscheinlich nicht bei Shared Hosting, aber theoretisch sollte es …) Swiftmailer hat sogar eine Einstellung

$message->setReturnPath

Was ich jetzt benutze, um Bounces zu verfolgen …

Fröhliche Trails! (Fröhliche E-Mails?)

987390cookie-checkWie versendet man wöchentlich 100.000 E-Mails? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy