Newsletter per Cronjob versenden

Hallo Zusammen,

wir haben eine Frage bezüglich dem Newsletter und Cronjob.Jedes Mal wenn wir versuchen unserern Newsletter zu einem bestimmten Zeitpunkt automatisch verschicken zu lassen, funktioniert dies bei uns nicht. Sobald der Versandzeitpunkt erreicht ist, ändert sich der Status des Newsletters auf 0% E-Mails versendet, bleibt dort aber auch für mehrere Stunden stehen, ohne dass sich etwas ändert. Die Newsletter Einstellungen übernehmen wir genau aus der Doku (http://community.shopware.com/Newsletter_detail_933.html). Das Intervall des Cronjobs beträgt eigentlich auch nur 5 Minuten.

Hat jemand von Euch eine Idee, was das Problem sein könnte?

Vielen Dank für Eure Hilfe.

Cron Plugin aktiviert?

Rechte min. auf 755?

Wenn ja, dann ruf doch mal den Cronjob von Hand im Browser auf: dein-shop.de

Hallo,

vielen Dank für deine Hilfe.

Das Cron Plugin wird als aktiviert angezeigt (Im Plugin Manager). Wo genau kann man die Rechte ändern ("Rechte min. auf 755?)

Wenn wir den Cronjob dann manuell starten, versendet er den Newsletter auch ganz normal.

Aha, ok, dann stimmt vielleicht was mit dem eingerichteten Cron Job nicht…!?

Wir haben exakt das gleiche Problem… wir stellen den Newsletter aus Ausführungszeit “sofort”; aber es dauert Stunden mit einem Wert von 0%…

Wir rufen dann manuell den Cron über den Browser auf und laden die Seite immer wieder neu. Das kann ja nicht die Lösung sein.

Gibt es hier inzwischen neue Erkenntnisse? Habe gerade bei einem Shop das gleiche Problem. VG Jens

mir geht es genauso, wie ist der korrekte aufruf als cron ?
SW 5.7.16 und PHP7.4

Hallo,

siehe Shopware 5 - Einstellungen - System: Cronjobs

Viele Grüße

lieben dank …diesen Artikel kenne ich beinahe auswendig… Allgemeinplätze für cron und für den intelligenten Newsletter leider nicht zu gebrauchen…

CLI ist depreceated

Wenn du eine korrekte Syntaax für die shopware console hast… bitte gerne teilen

vielen Dank Thomas

php shopware.php /backend/Newsletter/cron

oder

wget -q https://deine-shopdomain.de/backend/Newsletter/cron

sollte immer noch funktionieren.

wget… wird erfolgreich abgeschlossen aber es werden keine mails versendet…

php mit absolutem pfad für die shopware PHP wird mit fehler, den composer zu installieren quittiert.

andere swag cron jobs laufen alle gut…
es ist zum erbrechen, wieviel zeit man hier verbraten kann,

Stimmt denn der Versandzeitpunkt im Newsletter und ist das „Cron“ Plugin installiert ?
Als Versandzeitpunkt mal probieren, anstelle von „Sofort“ auf ein Datum/Uhrzeit in der Zukunft zu stellen.

ja cron plugin ist installiert, wir haben ja auch andere Cron jobs… ein paar über den SWAG CronManager ein paar über cron Verwaltung von ubuntu / Plesk (root server)
mit und ohne Zeit/Datum … schon alle varianten durch.
shopware.php ist auch rechte überprüft

… und in den Newsletter Einstellungen ist bei „Veröffentlicht“ und „Bereit zum Versenden“ auch der Haken gesetzt ? So klappt das bei mir (auch Plesk, verwende allerdings als Cron-Typ „URL abrufen“, wobei das auch nichts anderes als wget/curl ist) - weiterer Punkt könnte auch noch sein, dass Ihr einen Cron-Key verwendet. Dann müsste dieser mit in den wget Request:

https://deine-shopdomain.de/backend/Newsletter/cron?key=DeinCronKey

erstmal vielen Dank für die Mühe…
ja wir haben alle erdenklichen Formate, Kombinationen etc. bereits mehrfach durch… wir haben auch firewalls etc. abgeschaltet… einzig nur der Aufruf im Browser funktioniert für den Newsletter.
Alle anderen cron Jobs laufen einwandfrei. wie z.B. Mahnungen, Aufräumen, Backups etc.
Ein Rätsel

Hier ein Batch File für Dich:

@echo off
curl http://www.DeinShop.de/backend/Newsletter/cron?key=DeinCronKey

Kopiere Dir den Code in eine Textdatei, passe dann noch die URL sowie den CronKey an und speicher diese Textdatei dann z.B. als »SendMyNewsletter.bat« ab.

Danach kannst Du diese Datei mit einem Doppelklick als Trigger nutzen!

Wenn Du einen Zeitintervall haben möchtest, könnte das hier evtl für Dich einen Übergangslösung sein:

echo "Enter the time interval in hours:"
read INTERVAL

while true; do
  RESPONSE=$(curl -o /dev/null -s -w "%{http_code}\n" http://www.meinshop.de/backend/Newsletter/cron)
  echo "Response status code: $RESPONSE"
  sleep $((INTERVAL * 60 * 60))
done

Oder mit Zeitintervall & Error LOG File:

#!/bin/bash
echo "Enter the time interval in hours:"
read INTERVAL

LOG_FILE="cron_log.txt"

while true; do
  RESPONSE=$(curl -o /dev/null -s -w "%{http_code}\n" http://www.meinshop.de/backend/Newsletter/cron)
  if [[ "$RESPONSE" != "200" ]]; then
    DATE=$(date +"%Y-%m-%d %H:%M:%S")
    ERROR_MSG="[$DATE] ERROR: HTTP status code $RESPONSE returned from http://www.meinshop.de/backend/Newsletter/cron"
    echo "$ERROR_MSG"
    echo "$ERROR_MSG" >> "$LOG_FILE"
  fi
  sleep $((INTERVAL * 60 * 60))
done

lieben dank an alle hier ist die Lösung, letzendlich von shopware support, für einen normalen cron job wir z.B. plesk Befehl ausführen:

  1. cd zum absoluten shopware verzeichnis
    2 &&
  2. richtige PHP version… /opt/plesk/php/7.4/bin/php
  3. dann shopware.php /backend/Newsletter/cron

muster:
cd /absoluten pfad zum shopverzeichnis && /opt/plesk/php/7.4/bin/php shopware.php /backend/Newsletter/cron