Projekt

Allgemein

Profil

Aktionen

GX-Bug #50672

geschlossen

Newsletter wird nicht an alle Abonnenten verschickt

Von Torben Wark vor mehr als 7 Jahren hinzugefügt. Vor fast 7 Jahren aktualisiert.

Status:
Erledigt
Priorität:
Normal
Zugewiesen an:
Torben Wark
Kategorie:
Adminbereich
Zielversion:
% erledigt:

100%

Geschätzter Aufwand:
Steps to reproduce:
Betroffene Versionen:
3.3.3.0
Release Notes Langtext:

Newsletter werden wieder an alle Empfänger verschickt


Beschreibung

Meldung von einem Kunden aus dem Forum:

In der aktuellen V3.3.2.0 und mindestens in der V3.3.1.2 (ich habe jetzt nicht geschaut, seit wann das genau durchgeschliffen wird) gibt es ein Problem mit dem Newsletter-Modul.

Kleines Beispiel: 2500 Newsletter-Kunden, über den eMail-Server dürfen nur 250 Mails zeitgleich geschickt werden. Also im Adminbereich unter Kunden->eMails->eMail-Optionen->Maximale Anzahl E-Mails pro Versand genau diese 250 eingestellt.

Das Script zum Senden des Newsletters teilt ja jetzt die zu sendende Anzahl in 250er-Pakete auf und ruft sich mehrmals selber auf. Am Ende scheint alles geklappt zu haben. Aber: Es verschickt statt der 2500 eMail nur die ersten 250. Nachzuvollziehen im eMail-Archiv und in der Datenbank unter module_newsletter_temp_(ID). Dort sind dann auch nur die ersten 250 Einträge mit einem 'send'-Comment versehen.

Also einmal in die /admin/module_newsletter.php geschaut und nach etwas zusätzlichem DEBUG-Code diese Stelle als Problem ausgemacht:

Zeile 288:

for ($i=1;$i<=$max_runtime;$i++)

Ab dem zweiten Aufruf der Datei wird diese Schleife nicht mehr durchlaufen. Grund ist die fehlerhafte Berechnung der Variabel $max_runtime in Zeile 247:

$max_runtime=$limit_up-$limit_low;

Denn diese beiden zugrunde liegenden Variabeln werden aus der

$_GET['send']

geholt, welche sich bei jedem Redirect ändert.

Lösung könnte folgende sein: Beim sql-query werden die Limits ja korrekt gesetzt bei jedem Redirect und somit das Array $email_data korrekt befüllt.

$max_runtime=$limit_up-$limit_low;

durch

$max_runtime = count($email_data);

ersetzen. Das war es dann auch schon. Weitere Änderungen sind nicht nötig.

Noch eine Anmerkung: Es gibt Browser-seitig ein Limit für Redirects. Bei den meisten gängigen Browsern liegt dieses Limit bei 20! Sollte man also z.B. 5000 Newsletter-Abonnenten haben und das Limit auf 200 setzen müssen, dann würde das Script 25(!) Redirects verursachen und der Browser dies mit einer Fehlermeldung quittieren. Dann müsste man bei sich im Browser das Limit bei Bedarf hochsetzen. Vielleicht wäre dies als Warnhinweis im Adminbereich beim Newsletter-Modul nicht verkehrt.


Aktionen #1

Von Moritz Bunjes vor fast 7 Jahren aktualisiert

  • Status wurde von Gemeldet zu In Bearbeitung geändert
  • Zugewiesen an wurde auf Moritz Bunjes gesetzt
Aktionen #2

Von Moritz Bunjes vor fast 7 Jahren aktualisiert

  • Status wurde von In Bearbeitung zu Testing geändert
  • Zugewiesen an wurde von Moritz Bunjes zu Core-Entwickler geändert
  • Zielversion wurde von 133 zu 3.8.0.0 beta1 geändert
  • Release Notes Langtext aktualisiert (Vergleich)
Aktionen #3

Von Moritz Bunjes vor fast 7 Jahren aktualisiert

  • Release Notes Langtext aktualisiert (Vergleich)
Aktionen #4

Von Torben Wark vor fast 7 Jahren aktualisiert

  • Zugewiesen an wurde von Core-Entwickler zu Torben Wark geändert
Aktionen #5

Von Torben Wark vor fast 7 Jahren aktualisiert

  • Status wurde von Testing zu Erledigt geändert
  • % erledigt wurde von 0 zu 100 geändert
Aktionen

Auch abrufbar als: Atom PDF