Das war Arbeit.
Unter der folgenden URL steht ein Paket mit einer aktualisierten include.newsletter_send.php zur Verfügung:
Hier
Voraussetzung für die Verwendung ist der Einsatz der Newsletter-Überarbeitung (siehe Signatur).
Bitte testet diese Änderung. Wenn alles geht, aktualisiere ich das Ursprungsthema zum Newsletter V4.4.x-Modul.
Anleitung:
0.) Newsletter-Überarbietung für V4.4.x einsetzen (siehe Signatur)
1.) ZIP-Datei herunterladen, entpacken und die Dateien in das contenido\includes-Verzeichnis hochladen
2.) In der
Mandanten-config.php (d.h. z.B. in cms\) unter den Eintrag $newsletteridcatart folgende Zeilen einfügen:
Code: Alles auswählen
$newsletterdispatchcount = 50;
$newsletterdispatchtime = 5;
$newsletterwritelog=0;
Die Angabe von $newsletterdispatchcount aktiviert die Versendung des Newsletters in Blöcken; die Zahl legt die Anzahl der zu versendenden Newsletter pro Block fest (hier: Versand an 50 Empfänger pro Block).
Wird $newsletterdispatchtime angegeben, erfolgt der Versand des jeweils nächsten Blocks automatisch nach Ablauf der angegebenen Zeit in Sekunden (hier: 5 Sekunden). Beide Werte müssen entsprechend des vorhandenen Systems ausgetestet und gewählt werden (d.h. kann z.B. der Server überhaupt 50 Newsletter in 5 Sekunden versenden).
Wird $newsletterdispatchtime
nicht angegeben, erfolgt der Versand in Blöcken, jeder Block muss jedoch manuell gesendet werden.
Wird $newsletterwritelog = 1; angegeben, werden nicht-erfolgreiche Sendversuche im Mandanten-logs-Verzeichnis protokolliert (z.B. cms\logs). Es sollte daher bei aktiver Option geprüft werden, ob die Rechte für das Verzeichnis stimmen (777). Außerdem dran denken: Jeder, der weiß, wo die Log-Datei gespeichert wird, kann sie über das Web lesen - auch wenn sie keine funktionierenden E-Mail-Adressen enthalten sollte, könnte man es missbrauchen. Also Datei nach dem Versenden löschen...
Beispiel:
Code: Alles auswählen
$newsletterdispatchcount = 50;
$newsletterdispatchtime = 5;
$newsletterwritelog=0;
Versand an 50 Empfänger, nächsten Block nach 5 Sekunden Wartezeit senden. Kein Sendefehler-Log schreiben.
Code: Alles auswählen
$newsletterdispatchcount = 100;
// $newsletterdispatchtime = 5;
$newsletterwritelog=1;
$newsletterdispatchtime ist auskommentiert und damit nicht angegeben - Versand an 100 Empfänger, jeder Block muss manuell versendet werden. Sendefehler-Log schreiben.
Dinge, die man wissen sollte:
- Die Zeitsteuerung erfolgt über das meta-Tag des Typs Refresh - der Browser, über den der Newsletter-Versand gesteuert wird, muss dieses Tag unterstützen (und es darf keine andere Software dazwischenfunken, e.g. "Tools für mehr Sicherheit im Netz"). Außerdem darf in der Zeit, in der die Newsletter versendet werden, das Browser-Fenster nicht geschlossen noch eine andere Funktion aufgerufen werden.
- Auch während des automatischen Versands kann mit Klick auf das Cancel-Icon der Versand abgebrochen werden.
- Der Informationsgehalt ist gering: Wird die Sendung in Blöcken aktiviert, erfährt man nur, an wieviele Empfänger gesendet wurde und an welche Empfänger der Versand nicht möglich war (jeweils im aktuellen Block). Bei automatischem Versand des jeweils nächsten Blocks bleiben einem nur die eingestellten Sekunden, die Empfänger, an die nicht gesendet werden konnte, zu ermitteln - es gibt keine Komplettliste ("Versendet an", "Nicht versendet an"). Ausnahme: $newsletterwritelog wurde auf 1 gesetzt.
Das Ganze ist
nicht mit der
V4.5.x oder höher kompatibel (auch nicht mit der Überarbeitung zu diesen Versionen).
Der php-abc-Newsletter verwendet übrigens den gleichen Trick...
Gruß
HerrB