0 votes
ago in SoSci Survey (dt.) by s324582 (160 points)
edited ago by SoSci Survey

Guten Tag,

ich habe mit folgendem Code den Serienmailversand für meine geplante Tagebuchstudie programmiert (nur Ausschnittsweise, nicht für alle Tage hier abgebildet zum Verständnis der Logik):

$date = date("Y-m-d H:i:s");
$date = strtotime($date);

if (value("IN11") == 11) {
    $day01 = '28.07.2025';
    $day02 = '29.07.2025';
    $day03 = '30.07.2025';
    $day04 = '31.07.2025';
    $day05 = '01.08.2025';
    $day06 = '04.08.2025';
    $day07 = '05.08.2025';
    $day08 = '06.08.2025';
    $day09 = '07.08.2025';
    $day10 = '08.08.2025';
    }
if (value("IN11") == 1) {
    $day01 = '18.08.2025';
    $day02 = '19.08.2025';
    $day03 = '20.08.2025';
    $day04 = '21.08.2025';
    $day05 = '22.08.2025';
    $day06 = '25.08.2025';
    $day07 = '26.08.2025';
    $day08 = '27.08.2025';
    $day09 = '28.08.2025';
    $day10 = '29.08.2025';
}

$MZP_01= date("H:i", strtotime('.05:00.')); 
$MZP_02= date("H:i", strtotime('.13:00.')); 
$MZP_03= date("H:i", strtotime('.20:00.'));


mailSchedule(false, 2, strtotime($day01 ." ".$MZP_01)); 
mailSchedule(false, 4, strtotime($day01 ." ".$MZP_02));  
mailSchedule(false, 7, strtotime($day01 ." ".$MZP_03));   

mailSchedule(false, 8, strtotime($day02 ." ".$MZP_01)); 
mailSchedule(false, 9, strtotime($day02 ." ".$MZP_02));  
mailSchedule(false, 10, strtotime($day02 ." ".$MZP_03));      

Der Versand der Serienmails zu den genannten Zeitpunkten funktioniert auch sehr gut. Ich teste gerade den Fragebogen mehrmals, und habe mich entsprechend heute Nachmittag mit einer Test-e-mail in meinem Fragebogen registriert, um etwas auszuprobieren. Ich habe dann obwohl es schon nach 14:30 war, sowohl die Mail, die heute um 05:00 morgens verschickt wurde, als auch die Mail, die um 13 Uhr verschickt wurde, auf einen Schlag zusammen mit dem Eingangsfragebogen, den ich mit folgendem Code programmiert habe, bekommen:

mailSchedule(false, 1, 5); (Eingangsfragebogen)
mailSchedule(false, 36, strtotime('+1 day')); (Reminder, 1 Tag später)

Ich möchte vermeiden, dass dieser nachträgliche Versand bei späterer Registrierung passiert. Zwar sollte dies aufgrund der Auswahl des individuellen Zeitraums für die Studie auch nicht passieren (da man sich idealerweise nicht für einen Zeitraum registriert, der bereits begonnen hat, so wie ich heute in meinem Versuch), wenn doch, würde es aber für Verwirrung sorgen. Wie kann ich umgehen, dass die Mails "nachgeschickt" werden?

Vielen lieben Dank für Ihre HIlfe!

1 Answer

0 votes
ago by SoSci Survey (350k points)

Da sind ein paar Ungenauigkeiten im Code. Erstens sollten Sie das Datum Y-M-D schreiben, also nicht 29.08.2025 sondern 2025-08-29. Das vermeidet Ambivalenzen mit der englischen Eigenheit Tag und Monat zu tauschen.

Und dann haben Sie hier unerklärliche Punkte ...

$MZP_01= date("H:i", strtotime('.05:00.')); 

... und Sie rechnen einmal im Kreis. Stattdessen können Sie auch einfach schreiben:

 $MZP_01= '05:00'; 

Und ja, wenn Sie sagen, dass eine Mail in der Vergangenheit verschickt werden soll, dann schickt Sosci Survey diese direkt noch raus. Wenn Sie das vermeiden möchten müssten Sie noch einen Filter einbauen.

Ich würde es noch in eine Schleife packen, damit es übersichtlich bleibt.

$times = [
    2 => strtotime($day01 ." ".$MZP_01),
    4 => strtotime($day01 ." ".$MZP_02),
    7 => strtotime($day01 ." ".$MZP_03),
    
    8 => strtotime($day02 ." ".$MZP_01),
    9 => strtotime($day02 ." ".$MZP_02),
    10 => strtotime($day02 ." ".$MZP_03)
];

foreach ($times as $mail => $time) {
  if ($time > time()) {
    mailSchedule(false, $mail, $time); 
  }
}

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...