Wie versende ich 100.000 E-Mails pro Woche?

Wie kann ich in PHP pro Woche eine E-Mail an 100.000 Benutzer senden? Dazu gehören E-Mails an Abonnenten, die die folgenden Anbieter verwenden:

  • AOL
  • G-Mail
  • Hotmail
  • Yahoo

Es ist wichtig, dass alle E-Mails so weit wie möglich zugestellt werden. Natürlich ist das Versenden von E-Mails normalerweise nichts anderes als Probleme zu verursachen.

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

-146
11 окт. Setze xRobot 11 Okt. 2010-10-11 14:24 10 am 14:24 2010-10-11 14:24
@ 3 Antworten

Die kurze Antwort lautet: Obwohl es technisch möglich ist, 100 Tausend Euro per E-Mail zu versenden, ist es die einfachste, einfachste und billigste Lösung, sie jede Woche an eines der spezialisierten Unternehmen auszulagern (ich sagte „billig“): Es gibt keine Zeitbegrenzung Entwicklung (und damit Geld), in die Sie eintauchen können, wenn Sie versuchen, DIY zu tun).

Die > Wenn Sie sich dazu entschließen, es unbedingt selbst zu tun, bereiten Sie sich auf die Welt der Schmerzen vor (schließlich ist dies die E-Mail / E-Fail, über die wir sprechen). Sie benötigen:

  • E-Mail-Inhalte, bei denen es sich nicht um Spam handelt (andernfalls werden Sie an jeder Ecke auf weitere wichtige Hindernisse stoßen, auch wenn dies rechtliche Konsequenzen hat)
  • Außerdem sollte Ihr Inhalt leicht von Spam unterschieden werden können - in einigen Fällen kann es etwas schwierig sein (Ich habe gehört, dass ein bestimmtes Pharmaunternehmen E-Mails ablehnen musste, da deren Markennamen in Spam häufig vorkommen).
  • Anpassbarer eigener SMTP-Server, der beim Senden von 100-Kilobyte-E-Mails nicht erfasst wird (Ihr Upstream-ISP-Server wird hier nicht ausreichen, und Sie werden den ISP unglücklich machen, wir haben zwei dedizierte Blöcke verwendet.)
  • einige Mail-Wrapper (zum Beispiel PhpMailer, wenn PHP Ihr bevorzugtes Gift ist, ist PHP mail() alleine schon schrecklich genug)
  • Ihre eigene Absenderfunktion wird in einer Schleife ausgeführt, erstellt Buchstaben und sendet sie an die Shell (beachten Sie, dass PHP-Speicherbeschränkungen auftreten können. Wenn Ihre Anwendung einen Speicherverlust aufweist, müssen Sie möglicherweise den Sendevorgang regelmäßig wiederverwenden oder, noch besser, die "elektronische Erstellung" trennen Mail "und" E-Mail senden "im Allgemeinen)

Überraschenderweise war es der leichte Teil. Der schwierige Teil sendet es tatsächlich:

  • Einige Server werden Sie verbieten, wenn Sie zu viele E-Mails in der Nähe senden. Sie müssen also die Reihenfolge ändern, bis Sie an der Reihe sind (z. B. eine E-Mail an joe@example.com und dann drei an andere Domänen und dann an eine andere.) andereAdresse@example.com)
  • Sie benötigen die korrekten PTR-, SPF- und DKIM- Datensätze
  • Remote-Server-Timeouts, falsch konfigurierte DNS-Einträge und andere Netzwerk-Witze
  • Umgang mit ungültigen E-Mails (und nein, Regex ist das falsche Werkzeug dafür )
  • (Viele legitime Newsletter wurden als Spam neu klassifiziert, da viele enttäuschte Benutzer nicht gleichzeitig abbestellen konnten und sich dafür entschieden haben, "als Spam zu kennzeichnen" - sie werden die Spam-Filter kennen, insbesondere bei großen E-Mail-Anbietern.)
  • Bearbeitung von Fehlern und Abweichungen ("Es gibt keine Mailbox ojhn@example.com", "Mailbox john@example.com full")
  • Blacklist-Verarbeitung und Entfernen von Blacklists (Natürlich senden Sie keine Spam-Mails. Einige Empfänger werden sich nicht so sicher sein - bei einer so großen Liste wird dies manchmal der Fall sein, unabhängig von den Vorsichtsmaßnahmen, die Sie treffen. Einige Personen (z. B. Ihre nicht) Skrupellose Konkurrenten) können sogar so weit gehen, dass Sie Ihre Newsletter fälschlicherweise als Spam melden - das stimmt. Im Durchschnitt dauert es mehrere Wochen, bis Sie sich von der schwarzen Liste entfernen.)

Und als Krönung müssen Sie den rechtlichen Teil verwalten (verschiedene Bundes-, Länder- und örtliche Gesetze und sogar verschiedene Gesetzesverbände, wenn Sie in die USA versenden.) Hinweis: Sie können nicht feststellen, ob Joe @ hotmail.com in Südwest-Elbonia lebt. ein Land mit den drakonischsten Gesetzen des Antispam-Friedens)).

Ich bin mir ziemlich sicher, dass ich ein paar Köpfe dieser Hydra vermisst habe - sind Sie immer noch sicher, dass Sie es selbst machen wollen? Wenn ja, wird es eine weitere Welle geben, diesmal nur die unangenehmen Probleme, die mit dem Versenden von E-Mails verbunden sind. (Sie sehen, SMTP ist ein Speicher- und Weiterleitungsprotokoll. Das bedeutet, dass Ihre E-Mail auf vielen SMTP-Servern im Internet gemischt wird, in der Hoffnung, dass die nächste etwas näher am endgültigen Empfänger ist. Die E-Mail wird an den SMTP-Server gesendet. Dadurch wird es wiederum an einen anderen SMTP-Server weitergeleitet, und zwar nach einer bestimmten Zeit, bis er den SMTP-Server für diese Domäne erreicht. oder in wenigen Minuten, Stunden oder Tagen oder nie.) Sie werden also Folgendes sehen Probleme: die meisten davon Es kann auf der Durchreise und am Zielort erfolgen:

  • Remote-SMTP-Server möchten nicht mit Ihrem SMTP-Server kommunizieren
  • Ihre Briefe werden als Spam markiert ( <blink> nicht Ihr Freund, nicht <font color=...> )
  • Ihre Briefe werden auch in den letzten Wochen in wenigen Tagen verschickt (entgegen der landläufigen Meinung soll SMTP alle Anstrengungen unternehmen, um die Nachricht in der Zukunft zu übermitteln - nicht jetzt zu übermitteln)
  • Ihre Briefe werden überhaupt nicht zugestellt (bereits vom E-Mail-Server an Hop Nr. 4 gesendet, noch nicht vom Server an Hop Nr. 5 gesendet, der Server, auf dem Nachrichten derzeit abstürzen, Daten gehen verloren)
  • Ihre E-Mails werden unterwegs von einigen Braindead-Servern verarbeitet (diese Option ist mit der Base64-Kodierung etwas lösbar, aber die Größe nimmt zu und die E-Mail wirkt verdächtiger).
  • Ihre Briefe wurden zugestellt und die Empfänger scheinen sie nicht zu wollen ("Ich bin mir sicher, dass ich sie nicht abonniert habe, ich erinnere mich genau daran, was ich vor einem Jahr getan habe" (natürlich, ja, mein Herr))
  • Benutzer mit verschiedenen Versionen von Microsoft Outlook und besonderer Behandlung von Internetmail
  • Assistent-Assistent-Modus (selbstunterstützende Feedbackschleife - automatische E-Mails als Antwort auf automatische E-Mails als Antwort auf ...; Sie möchten wirklich nicht, dass sie deaktiviert wird, da Sie sich über das halbe Internet ärgern würden.)

und dies wird Ihre Aufgabe sein, dies zu beseitigen und zu beseitigen (Hinweis: Sie können es grundsätzlich nicht). Personen, die ein seriöses Massenmailing-Unternehmen betreiben, wissen, dass Sie dieses Problem letztendlich nicht lösen können und es auch nicht lösen können - und es gibt Gründe, die gut recherchiert, dokumentiert und beschrieben sind (vielleicht sogar als Powerpoint-Präsentation) - komplett mit Sounds und coolen Übergängen, die Ihre Chefs verstehen können), da sie dies bereits eine Million Mal früher erklären sollten. Darüber hinaus wissen sie bei Problemen, die tatsächlich lösbar sind, wie sie gelöst werden müssen.

Wenn Sie nicht entmutigt sind und es trotzdem tun möchten, gehen Sie geradeaus: Es ist sogar möglich, dass Sie den besten Weg finden, um es zu tun. Man muss nur wissen, dass der Weg in die Zukunft nicht einfach sein wird - das Versenden von E-Mails ist trivial und schwer zu bekommen.

681
11 окт. Die Antwort ist Piskvor 11 Okt. Gegeben . 2010-10-11 14:36 '10 um 14:36 ​​Uhr 2010-10-11 14:36

Die Leute empfahlen MailChimp, einem guten Massen-E-Mail-Anbieter. Wenn Sie nach einem guten Lieferanten für Transaktions-E-Mails suchen, kann ich Ihnen helfen.

In den letzten 6 Monaten haben wir mit vier verschiedenen SMTP-Anbietern herausgefunden, welcher der beste ist.

Hier ist eine Zusammenfassung dessen, was wir gefunden haben ...

Authsmtp

  • Günstigstes
  • Keine Analyse / Berichterstattung
  • Fehlendes Tracking für Open / Clicks
  • Einige Sendungen zögerten leicht

Stempel

  • Sehr günstig, aber nicht so günstig wie AuthSMTP
  • Schönes Cpanel, aber beim Öffnen / Klicken nicht nachgeführt
  • Verfolgen Sie die Aktivitäten auf der Abflugebene, damit Sie eine E-Mail öffnen können, die gesendet wurde, und sehen Sie, wie sie aussieht, und legen Sie die Zustellungsdetails fest.
  • Sie müssen eine API verwenden. Das Senden von SMTP wurde kürzlich eingeführt, dies ist jedoch ein Fehler. Beispielsweise haben wir festgestellt, dass Anführungszeichen (") in der Betreffzeile entzogen werden.
  • Es kann kein Anhang gesendet werden. Muss in der genehmigten Liste der Dateitypen und unter einer bestimmten Größe sein. (10 MB, denke ich)
  • Eine Liste mit Namen / Adressen ist erforderlich.
border=0

Jango SMTP

  • Teurer als andere - in manchen Fällen mehr als zehnmal
  • Hässliches Cpanel, aber ausgezeichnetes Tracking beim Öffnen / Klicken mit Details auf E-Mail-Ebene
  • Hatte manchmal gezögert, als er geschickt wurde. In zwei Fällen dauerte die Lieferung bis zu einer Stunde.
  • Eine Liste mit Namen / Adressen ist erforderlich.

Sendgrid

  • Nicht ganz billig wie AuthSMTP, aber immer noch sehr günstig. Viele Kunden können an 200 kostenlosen Sendungen pro Tag teilnehmen.
  • Ordentliches Cpanel, aber keine Details zum Open / Click-Tracking
  • Viele API-Optionen. Parameter (Verfolgung von Eröffnungen / Klicks usw.) können auf der Basis von E-Mail per E-Mail konfiguriert werden. Eine eingehende (Antwort-) E-Mail kann an unseren HTTP-Endpunkt gesendet werden.
  • Absolut null Schwankung beim Senden. Jeder gesendete Brief landete fast sofort im Briefkasten.
  • Kann im Namen von senden.

Fazit

SendGrid war der beste, als Postmark Zweiter wurde. Wir haben noch nie Schwankungen in der Versandzeit mit einer dieser beiden gesehen - in einigen Fällen haben wir mehrere hundert E-Mails gleichzeitig gesendet - und beide haben aufgrund des starken Attributs eine bessere Rendite.

46
13 окт. Die Antwort wird gegeben sohtimsso1970 13 oct. 2010-10-13 19:56 '10 um 19:56 2010-10-13 19:56

Folgendes habe ich kürzlich in PHP auf einem meiner großen Systeme gemacht:

  1. Der Benutzer gibt den Text des Newsletters ein und wählt die Empfänger aus (wodurch eine Anfrage zum Empfang von E-Mail-Adressen zur späteren Verwendung generiert wird).

  2. Fügen Sie den Text des Newsletters und die Empfängeranfrage der Zeile der MySQL-Tabelle mit dem Namen * email_queue * hinzu.

    • (In der email_queue-Tabelle gibt es die Spalten "bis" "Betreff" "Hauptteil" "Priorität").
  3. Ich habe ein anderes Skript erstellt, das jede Minute als Cron-Job ausgeführt wird. Es verwendet die SwiftMailer- Klasse. Dieses Skript ist einfach:

    • Während der Geschäftszeiten werden alle E-Mails mit Priorität == 0 gesendet

    • Senden Sie in Stunden andere E-Mails nach Priorität

Abhängig von den Host-Einstellungen kann ich jetzt die Drossel mit Standard-Swiftmailers-Plug-Ins wie Antiflood und Drossel verwenden.

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

und auch

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

usw. usw.

Ich habe seinen Pfad außerhalb dieses Pseudocodes erweitert, mit Anhängen und vielen anderen anpassbaren Einstellungen, aber er funktioniert sehr gut, so>

 $message->setReturnPath 

Was verwende ich jetzt, um Sprünge zu verfolgen ...

Glückliche Wege! (Glückliche Briefe?)

4
25 окт. Antwort gegeben Ethanpil 25 Okt. 2011-10-25 11:55 '11 am 11:55 2011-10-25 11:55