Frage

Wir haben ein Problem mit einem Massenmailer Komponente wurde, daß ich für eine lange Zeit und die genaue Art der Schwierigkeit schrieb, wie es zu messen und wie es zu mildern haben alle blieben schwer zu fassen.

Es ist zu dem Punkt, wo diese Probleme kritisch werden immer und ich brauche ein paar klaren Antworten, damit ich jemand hier die Hoffnung, ich kann sie.

Grundsätzlich ist dieses Massenmailer-Widget sendet gerade aus ca. 25k E-Mail einer E-Mail zu einer Zeit auf eine Mail-Liste. Dies ist unsere sehr bevorzugt Nachricht, weil es jeder Empfänger bedeutet, erhält eine E-Mail persönlich an sie gerichtet, so freuen wir uns, mit dieser Schleife.

Was wir nicht glücklich sind, ist, dass, wenn Sie nur das Programm verlassen nach ca. 6k E-Mails verarbeiten wir einen Fehler, dass die „Maximum Session Size“ erreicht ist und es keine weiteren Mails gehen zu senden.

Wir haben keine wirkliche Möglichkeit, derzeit zu wissen, welche E-Mail wurde es bis zu, unsere einzige Methode der Drosselung auf Mutmaßungen basiert und beinhaltet Aussendung 1k E-Mails alle 90 Sekunden manuelle Taste drücken.

ich gesucht habe, bis mein Kopf ist wund für einige Hinweise darauf, wie die E-Mails zu verfolgen, wie sie gehen, wie die Session Größe oder etwas zu messen, um nur das Verfahren zu ermöglichen eine Taste drücken zu sein und für das Widget zu sein Selbst Drosselung aber niemand scheint über ihn online sprechen zu wollen.

Ich habe ein paar Vorschläge zu verwandten Abfragen habe, die das Widget vollständig überarbeitet empfehlen oder sogar einen maßgeschneiderten Massen-Mail-App zu schreiben.

Am Ende alles, was wir tun wollen, um die abgehende Post zu drosseln, so dass es keinen Fehler verursachen, oder, wenn dies nicht zu vermeiden ist es erlauben, die Mails zu zählen und geben Sie uns einen Hinweis, wo bis holen oder sogar elegant den Fehler behandeln. Etwas. Alles, was.

Hat jemand auf der Erde und praktische Vorschläge für die Verfolgung von .Net 2.0 erzeugten E-Mail aus dem ursprünglichen Server?

War es hilfreich?

Lösung

Warum wird die Sitzung wächst? Tun Sie dies in einer Anforderung der Lebenszeit?

Ich nehme an, Sie „Tracking“ sind, indem sie Informationen über E-Mails innerhalb des Sitzungsstatus gesendet. Ich würde einen Tracker schreiben, die Tracking-Informationen an Außenspeichern, wie XML-Dateien auf der Festplatte oder eine SQL-Datenbank Batch-schreiben kann.

Wenn der Tracking-Teil ist nicht was verursacht Probleme, aber die ein-at-a-time E-Mail (oder das Widget sendet sie) ist, können Sie batching E-Mails versuchen und BCC sie, anstatt sie zu einem Zeitpunkt einer Aussendung . Blind Carbon Kopien werden immer persönlich angesprochen und enthüllen nicht den Empfänger, dass sie Masse geschickt wurden. Sie müssen nur die Begrenzung der Anzahl von E-Mails, herauszufinden, Sie über BCC senden.

dritte Option ist in Ihrem Web-App zu, fällt, was Sie diese E-Mails in einen gemeinsamen Speicherort erzeugen müssen und eine Windows-Dienst App (oder eine geplante Aufgabe App), die für neue E-Mail-Jobs regelmäßig überprüft und verarbeitet sie außerhalb Ihr Web-App ... vielleicht sogar außerhalb des Host-Servers Web-App. Natürlich wäre diese Art der Sache nicht auf Shared-Hosting-Server arbeitet ...

Andere Tipps

Wir tun viel die gleiche Sache, aber wir haben 500 E-Mails auf einmal pro Minute. Die erste 500 geschickt bekommen, dann wird die Seite neu geladen selbst, und die Arbeit geht weiter auf die nächsten 500.

Diese nehmen ein wenig Protokollierung und Speicherung von Informationen über die aktuelle Warteschlange von 500, so dass für Timeouts, frühe Reloads, etc, aber es hat gearbeitet (wahrscheinlich 10.000 oder so E-Mails in jeder beliebigen Nacht E-Mail) für ein paar Jahre.

ich ASP.NET nie eine Zeile Code verwendet, um wrie so kann ich Ihnen nicht mit Codierung Bereich helfen, aber was kann ich tun, ist, dass Sie den Fehler unter Hinweis darauf, zu helfen. Ich habe vorher Maß an Verständnis für SMTP-Protokoll und habe Erfahrung in dem laufenden SMTP-Server, die im Durchschnitt rund eine Million einzelne E-Mail pro Tag.

Der Fehler „Maximum Session Size“ erwähnen ist eigentlicher Grund für Verwirrung. Auch dieser Fehler klar gesagt, ‚Größe‘ eigentliches Problem ist, ‚Zahl‘, eine sehr große Zahl für Ihren E-Mail-Server zu übernehmen. Jede E-Mail (SMTP) Server in so konfiguriert, dass es verschiedene Anzahl von Faktor wie einzelne E-Mail-Nummer, Endempfänger Nummer usw. aus Sicherheitsgründen begrenzt. Sagen wir, jemand versuchen 1MB Größe von E-Mail an tausend Empfänger zu senden, die für Benutzer nur etwa 1 MB Daten von ihrem Host-Ende auf SMTP-Server übertragen müssen, wo Server selbst muss haben 1 GB Daten übertragen erfolgreich alle diese E-Mail zu liefern. Mehr als 2 GB Daten bei jeder E-Mail zurück aufprallen. Für den Schutz dieser Art des Angriffs auf Mail-Relay-Server, SMTP-Daemon eine Art von Grenze gesetzt. Auf Ihrem Fall ist das Skript für eine Zeit, um SMTP-Server zu verbinden und immer ohne jemals zu trennen Tausende von einzelnen E-Mail-Weiterleitung beginnen. Server ist eigentlich egal, entweder Sie es von ASP.NET-Programm oder einer anderen E-Mail-Client sendet sie begrenzen und lehnen Sie, wenn die Anzahl der Grenze überschritten.

Wie Sie über ‚Loop‘ sprachen für jede einzelne E-Mail zu erzeugen, setzen Sie einfach eine andere Schleife für jeden 500 E-Mail-Relay SMTP zu trennen und verbinden getan. Denken Sie daran, Ihr SMTP-Server Ablehnung Sie nicht wegen dir einige Größenlimit überschreiten, aber sie maximal zulässige erreicht E-Mail-Relais von einem einzigen Anschluss. Eine Verbindung, Relais feste Anzahl von E-Mail, trennen, verbinden Sie dann wieder nächste Charge von Post und Schleife senden es bis Sie jede einzelne Mail fertig Relaying Sie müssen liefern.

Happy Emailing (nicht Spaming) ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top