Zum Inhalt springen

Direct Mail + Scheduler + Cronjob - How To ?

Erstellt am 4. Februar 2013 · 10 Antworten · letzte Antwort am 7. November 2013

Tags: Direct Mail, Frage

vocean ·

Hallo,

ich stehe bei der Zeiteinstellung für meinen automatisierten Newsletter etwas auf dem Schlauch.
Also prinzipiell läuft der Cronjob und der Newsletter Versand schonmal mit dem Scheduler, es geht also "nur" um die richtigen Intervalle beim Cronjob und im Scheduler.

Mein Prinzip ist das folgende:

Es soll jede Woche einmalig automatisiert ein Newsletter erstellt werden (der Newsletter-Inhalt ist ein tt_content Datensatz der manuell jede Woche geändert wird).

Dazu habe ich eine Newsletter-Seite (inkl. Template) angelegt, welche als Inhalt per "Datensatz einfügen" ein Inhaltselement aus der Typo3 Seite enthält. Anschließend habe ich diesen Newsletter über direct mail als "Entwurf" gespeichert. Danach habe ich im Scheduler zwei Tasks angelegt:

1. Direct Mail: Create Mail from Draft (direct_mail) (mit dem entsprechenden Entwurf)
2. Direct Mail: Mailing Queue (direct_mail)

beide sollen wiederkehrend jeden Montag um 10 Uhr ausgeführt werden (* 10 * * 1)
Der Cronjob started ebenfalls jeden Montag um 10 Uhr. (* 10 * * 1)

Was nun passiert ist folgendes:
Es wird ein Newsletter verschickt, der allerdings einen veralteten Inhalt enthält (1 Woche vorher). Der Seiteninhalt wird aufjedenfall jeden Montag VOR 10 Uhr geändert, also eigentlich sollte der Newsletter den aktuellsten Inhalt enthalten, tut er aber nicht.

Jemand eine Idee woran es liegt?
Ist das Vorgehen überhaupt richtig, ich meine wird durch den Task "Direct Mail: Create Mail from Draft (direct_mail)" auch immer ein aktueller Newsletter mit aktuellen Inhalt erstellt?
Muss ich das Erstellen und Versenden zu versetzten Zeiten aufrufen?

Benötige dringend Hilfe, da es natürlich etwas peinlich ist, einen veralteten Newsletter zu verschicken.

Grüße
Volker

vocean ·

PS:

Um ein eventuelles Cacheproblem auszuschließen habe ich nun für 09 Uhr einen dritten Task ergänzt (also zeitlich vorher), der den Seitencache leeren soll, damit beim "Create Mail from Draft" auch der aktuellste Stand geladen wird. Das mache ich über "Delete cache entries by tags (enetcache)" welchem ich als "list of tags" folgendes angebe: "PageId_3", wobei 3 die Seite mit den Datensätzen ist, die sich der Newsletter holen soll.

Nun hängt sich der Newsletter jedoch völlig auf. Eigentlich hätte heute morgen um 10 Uhr der Newsletter versendet werden sollen, allerdings hat mir mein CronDaemon (also die Fehlerasugabe vom Server) folgendes geliefert:

PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
PHP Warning: Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 71 bytes) in /var/www/vhosts/domainname.de/httpdocs/typo3_src-4.6.6/typo3/contrib/swiftmailer/classes/Swift/CharacterReader/Utf8Reader.php on line 136

Und es wurde auch kein Newsletter verschickt. Als ich dann ins Backend geschaut habe, war der Status des "Direct Mail: Mailing Queue (direct_mail)" auf "currently running", aber es passierte nichts weiter. Es waren allerdings im DirectMail Versand-Status Bereich haufenweise AUfträge (ab 10 Uhr jede Minute einer) zu sehen, die alle noch nicht verschickt wurden. Ich vermute dass ha den PHP Fatal error ausgelöst, oder? Jedenfalls habe ich den Task dann gestoppt und nochmals manuell angestoßen (siehe Screenshot anbei).
Dann wurde der Newsletter auch verschickt, allerdings statt mit dem gewünschten Inhalt nun mit so einem Inhalt "PCFET0NUWVBFIGh0bWwJUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv..."
Woran kann das liegen, vielleicht am "enetcache" task, der kommt ja aus einer Erweiterung. Im Frontend wurde/wird jedenfalls als richtig dargestellt.
Bin hier langsam am verzweifeln, es kann doch nicht so kompliziert sein einen wöchentlichen Newsletter einzustellen.

Der serverseitge Cronjob sieht übrigens so aus:
* 10 * * 1 php /var/www/vhosts/domainname.de/httpdocs/typo3/cli_dispatch.phpsh scheduler > /dev/null

Kann es sein, dass ich zwei Cronjobs brauche, einen für das "Direct Mail: Create Mail from Draft (direct_mail)" und einen späteren (z.B. 1 Stunde später) für das "Direct Mail: Mailing Queue (direct_mail)"?

Need urgent help.

Viele Grüße
Volker

Bildschirmfoto-2013-02-04-um-12.19.51.png

jenses ·

Folgende 2 Cronjobs sind einzurichten:
1.) Direct Mail: Create Mail from Draft (direct_mail)
Wiederkehrend
Häufigkeit: 20 14 * * 5 (in diesem Fall wöchentlich am Freitag um 14:20 Uhr)
Parallele Ausführung erlauben: ja
Choose Draft to create DirectMail from: hier den richtigen Entwurf (draft) auswählen

Zum gewählten Zeitpunkt wird also ausgehend vom Entwurf ein direct_mail-Datensatz angelegt mit der aktuellen Zeit als Versandzeitpunkt.

2.) Direct Mail: Mailing Queue (direct_mail)
Wiederkehrend
Häufigkeit: */5 * * * * (alle 5 Minuten)
Parallele Ausführung erlauben: ja

Der 2te Task startet also alle 5 Minuten.
Findet er einen direct_mail-Datensatz, der noch nicht als versendet markiert ist,
beginnt er mit dem Versand der Emails, und zwar per Durchlauf so viele wie im Extensionmanager unter: "Direct Mail" -> Konfiguration -> "Number of messages per cycle" angegeben wurde (Standard 50).
Im Standardfall werden also alle 5 Minuten 50 Emails versandt, solange, bis alle Empfänger aus der Liste abgearbeitet wurden.
Dann wird auch der direct_mail-Datensatz als "versendet" markiert.

vocean ·

Hallo,

danke für die detaillierte Anleitung! Ich denke soweit ist jetzt alles für den Typo3-Scheduler klar (nur das Problem mit dem Neuladen der Empfängerliste muss ich noch beheben, die werden ja leider nicht automatisch aktualisiert). Aber welchen Cronjob lasse ich dann auf meinem Server laufen? Nur den für den Scheduler? Also:
*/5 * * * * php /var/www/vhosts/domainname.de/httpdocs/typo3/cli_dispatch.phpsh scheduler > /dev/null

oder noch einen zweiten für "direct_mail masssend"? Das hatte ich nämlich mal in anderen Anleitungen gelesen.

jenses ·

Du brauchst nur den Cronjob für den Scheduler, die Direct Mail-Prozesse werden dann von dort angestoßen.

CreepyKnarz ·

Hi,

ich hab ein ähnliches Problem mit dem Cronjob und DirectMail-Prozesse, speziell "Create Mail from Draft".
Das Problem ist die Aktualisierung der Empfängerliste, diese konnte ich mit einem Patch im folgenden Link partiell lösen.

http://forge.typo3.org/attachments/23578/patch_34432_3.0.4.diff

Die Aktualisierung der Empfängerliste funktioniert, aber nur über den manuellen Aufruf vom Scheduler-Tool im Backend.
Der Aufruf mittels Cronjob, der den Scheduler startet bleibt diese Liste immer leer.

Hat irgendjemand eine Ahnung, wie dieses Problem zu lösen ist.

jenses ·

Der _cli_scheduler benötigt Datenbankfreigaben für die Systemordner mit fe_usern und Newsletter sowie Lesezugriff für die Tabellen fe_users,fe_groups und direct mail categories sowie Schreibzugriff auf fe_users (über "Zugriffslisten" Web -> Liste sowie die beiden Tabellen auswählen).

Im Backend rufst du den Task ja als Admin auf, da hast du die Rechte und es klappt alles wie erwartet...

CreepyKnarz ·

Vielen Dank jetzt funktioniert die Aktualisierung der Empfängerliste mit dem Cronjob.

Nur die Aktualisierung des Newsletter-Inhalts, sobald dieser geändert wird, wird nicht durchgeführt, wahrscheinlich ist das ein ähnliches Problem wie die Empfängerliste. Leider habe ich bereits alle möglichen Rechte dem "_cli_scheduler" gegeben und dennoch ist der Inhalt der selbe wie der Erstellung des Entwurfs.

Wie ist das jetzt zu lösen?

jenses ·

_cli_scheduler braucht die TS Config - Einstellung options.clearCache.all=1.
Und dann muß natürlich der Task "Direct Mail: Create Mail from Draft (direct_mail)" zeitlich mit genug Spielraum vor dem Task "Direct Mail: Mailing Queue (direct_mail)" aufgerufen werden, ansonsten verschickst du den alten Newsletter erneut.

CreepyKnarz ·

Trotz der TS Config-Einstellung und einem Zeitraum (1 Stunde sollte doch ausreichen) zwischen "Create Mail from Draft" und "Mailing Queue" wird der alte Newsletterinhalt versendet.

Brauch ich vielleicht noch ein weiteres Plugin und Task, der vor diesen beiden gestartet werden muss?

CreepyKnarz ·

Ich verzweifle der Cronjob sendet immer noch den alten Newsletter, nur vom Backend klappt es.
Alle vorangegangen Configs wurden durchgeführt.

Ich bin mit meinem Latein am Ende, weiß irgendwer eine Lösung dafür?