Hallo zusammen,
ich wende mich an Sie, da ich aktuell Schwierigkeiten bei der Umsetzung eines längsschnittlichen Studiendesigns mit Serienmails habe und die Reminder-Logik nicht wie gewünscht funktioniert.
Wir führen eine 14-tägige längsschnittliche Befragung durch. Die Teilnehmenden sollen täglich um 18:00 Uhr eine Einladung zur Kurzbefragung erhalten. Zusätzlich soll um 21:00 Uhr am selben Tag eine Erinnerungsmail versendet werden – allerdings nur an diejenigen Personen, die den Fragebogen bis dahin noch nicht vollständig ausgefüllt haben.
Bisherige Umsetzung:
- Die Serienmails (Einladungen und Reminder) sind in SoSci Survey angelegt (separate Mail-IDs pro Tag).
- Der Versandzeitpunkt wird über PHP mittels
mailSchedule() gesteuert (zeitversetzter Versand über Delay).
- Für die Reminder-Mails habe ich die Option
'status' => 'incomplete'
gesetzt, sodass diese nur an Personen gehen sollten, die den Fragebogen noch nicht abgeschlossen haben.
Das ist mein aktueller PHP Code:
$now = time();
// IDs der Serienmails (2 bis 14)
$seriesMailIds = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
// IDs der Reminder-Mails (15 bis 27)
$reminderMailIds = [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27];
// Startzeit: morgen um 18:00 Uhr
$startTime = strtotime('tomorrow 18:00');
$delayToStart = $startTime - $now;
// =============================
// Hauptmails um 18:00 Uhr
// =============================
for ($i = 0; $i < count($seriesMailIds); $i++) {
$delay = $delayToStart + ($i * 86400);
mailSchedule(false, $seriesMailIds[$i], $delay);
}
// =============================
// Reminder um 21:00 Uhr
// nur wenn NICHT vollständig beantwortet
// =============================
for ($i = 0; $i < count($reminderMailIds); $i++) {
$delay = $delayToStart + ($i * 86400) + (3 * 3600);
mailSchedule(
false,
$reminderMailIds[$i],
$delay,
[
'status' => 'incomplete'
]
);
}
Die Erinnerungsmails werden so aber leider nicht verschickt. Wenn ich den Zusatz , dass sie nur an Status = incomplete weglasse, werden sie leider an alle Personen versendet, egal ob der Fragebogen schon ausgefüllt wurde oder nicht.
Separat unter den Versand Optionen kann ich die Einstellung leider nicht ändern, da ich sonst einen konkreten Versand-Zeitpunkt einstellen müsste, was ich aber ja über den PHP Code mache.
Ich wäre Ihnen sehr dankbar, wenn Sie mir kurz erläutern könnten, wo hier möglicherweise der Fehler liegt bzw. wie sich die gewünschte Logik korrekt umsetzen lässt.
Vielen Dank im Voraus für Ihre Unterstützung!
Mit freundlichen Grüßen