Technisch akzeptiert mailSchedule()
für jede Teilnehmerin und jeden Teilnehmer ein eigenes Datum bzw. einen separaten Zeitpunkt. Sie müssen also nur noch dafür sorgen, dass Sie zufällige Zeitpunkte an die Funktion übergeben.
So macht das der zeitrandomisierte Serienmail-Versand im übrigen auch. Da wird für jede Person aus den definierten Zeitschienen ein Zeitpunkt gezogen und dieser dann in den Versand-Zeitplan eingetragen.
Hier ein Beispiel, wie Sie am 16. März einen zufällige Zeitpunkt zwischen 15 und 17 Uhr auswählen. Da haben Sie 2 Stunden = 7200 Sekunden. Und die UNIX-Zeitstempel sind ja einfach nur Sekunden. Also:
$time = strtotime('2021-03-16 15:00:00') + random(0, 7200);
Diesen Zeitstempel können Sie direkt an mailSchedule()
übergeben.
Mit Wochentagen funktioniert das ähnlich. Hier z.B. ein zufälliger Tag in der Woche vom 15.03.2021 und darin ein Zeitpunkt zwischen 15 und 17 Uhr:
$time = strtotime('2021-03-16 15:00:00 +'.random(0,4).' days') + random(0, 7200);
Oder ebenso möglich, weil ein Tag (abgesehen von den Tagen mit Zeitumstellung!) immer 86400 Sekunden hat.
$time = strtotime('2021-03-16 15:00:00') + random(0,4) * 86400 + random(0, 7200);