0 votes
ago in SoSci Survey (dt.) by s313252 (140 points)

Hallo,

ich finde leider keine Auskunft dazu, ob ich Erinnerungsmails auch per PHP Code zeitlich terminieren kann? Geht das?

Liebe Grüße und vielen Dank!

2 Answers

0 votes
ago by s313252 (140 points)

Ich würde gerne einstellen, dass eine Erinnerungsmail am nächsten Tag um 10 Uhr versendet wird, sollte der Link am Tag zuvor mit der ersten Mail noch nicht aufgerufen worden sein.

0 votes
ago by SoSci Survey (344k points)

Ja, das ist möglich. Die Funktion, die Sie suchen heißt mailSchedule() - im Abschnitt "Erinnerungsmails" der Anleitung zur Funktion lesen Sie auch, wie Sie einstellen können, dass z.B. nur säumige Teilnehmer:innen die E-Mail erhalten.

Ich würde gerne einstellen, dass eine Erinnerungsmail am nächsten Tag um 10 Uhr versendet wird

Dafür benötigen Sie noch die PHP-Funktion strtotime(), die den ganzen Rechenaufwand für die Zeit abnimmt. In Ihrem Fall fast 1:1 übersetzt:

strtotime('next day 10:00:00');

Diesen Zeitstempel können Sie dann direkt in mailSchedule() verwenden.

ago by s313252 (140 points)
Vielen Dank für die Antwort. Ich bin mir allerdings noch nicht sicher, wie ich das mit meinem Befehl für die Serienmails kombinieren soll. Ich habe folgenden Befehl:

$info = panelData();
if (!$info) {
   text(...);  // Error message, kein Adresseintrag verfügbar
    pageStop();
}
if ($info['subgroup'] == 'Qual') {
    mailSchedule(false, 4, strtotime('+1 day'));
    mailSchedule(false, 3, strtotime('+2 days'));
    mailSchedule(false, 2, strtotime('+3 days'));
} else {
    mailSchedule(false, 5, strtotime('+1 day'));
    mailSchedule(false, 1, strtotime('+2 days'));
    mailSchedule(false, 2, strtotime('+3 days'));
}

Ich möchte jedes mal, wenn die E-Mail mit dem Link zu den drei Zeitpunkten nicht angeklickt wurde, eine Erinnerungsmail am folgenden Tag um 10 Uhr verschicken. Wo müsste ich denn dann den Befehl für die Erinnerungsmail hinzufügen?
ago by SoSci Survey (344k points)
> Wo müsste ich denn dann den Befehl für die Erinnerungsmail hinzufügen?

unter den drei mailSchedule() in jedem Zweig bräuchten Sie noch 3 weitere mailSchedule(). Und das strtotime() wäre dann strtotime('+2 days 10:00:00') ... wobei ich nicht sicher bin, ob das dann nicht noch einen Tag später ist, wenn der Aufruf nach 10 Uhr erfolgt. In den Debug-Informationen sollte man das sehen.
ago by s313252 (140 points)
Also für mein Verständnis:

Der Befehl würde dann so aussehen:

$info = panelData();
if (!$info) {
   text(...);  // Error message, kein Adresseintrag verfügbar
    pageStop();
}
if ($info['subgroup'] == 'Qual') {
    mailSchedule(false, 4, strtotime('+1 day'));
    mailSchedule(false, 3, strtotime('+2 days'));
    mailSchedule(false, 2, strtotime('+3 days'));

mailSchedule(false, ID der Erinnerungsmail, strtotime('+1 day 10:00:00'));
    mailSchedule(false, ID der Erinnerungsmail, strtotime('+2 days 10:00:00'));
    mailSchedule(false, ID der Erinnerungsmail, strtotime('+3 days 10:00:00'));



} else {
    mailSchedule(false, 5, strtotime('+1 day'));
    mailSchedule(false, 1, strtotime('+2 days'));
    mailSchedule(false, 2, strtotime('+3 days'));

    mailSchedule(false, ID der Erinnerungsmail, strtotime('+1 day 10:00:00'));
    mailSchedule(false, ID der Erinnerungsmail, strtotime('+2 days 10:00:00'));
    mailSchedule(false, ID der Erinnerungsmail, strtotime('+3 days 10:00:00'));

}
ago by s313252 (140 points)
Wie könnte ich das denn einmal ausprobieren ob es klappt? Also wie könnte ich zum Beispiel angeben, dass die Erinnerungsmail 5 Minuten nach der ursprünglichen Mail erfolgen soll, falls der Link nicht sofort angeklickt wurde?
ago by SoSci Survey (344k points)
> wie könnte ich zum Beispiel angeben, dass die Erinnerungsmail 5 Minuten nach der ursprünglichen Mail erfolgen soll

Ungefähr so:

// Einladung
mailSchedule(false, 4, strtotime('+1 day'));
// Erinnerung
mailSchedule(false, 6, strtotime('+1 day +5 minutes'), [
  'status' => 'no-response'
]);

Wenn Sie testen möchten, was strtotime() aus Ihren Angaben macht, dann versuchen Sie folgendes:

debug(date('d.m.y H:I', strtotime('+1 day +5 minutes')));

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

...