0 votes
in SoSci Survey (dt.) by s199762 (200 points)

Guten Abend,

ich soll der Kontrollgruppe, sofern diese Lust hat, nach dem Zeitraum meine Intervention zukommen lassen. Ich habe jetzt einfach auf S.1 die E-Mail-Adressen dann erhoben (Opt-In) und dann auf die neue Seite die Intervention gepackt (Seite 2). Darunter folgender PHP-Code:

$tomorrow = strtotime('tomorrow 17:00:00');
if (value('RA01') == 1) {
$person = value('KO01');
mailSchedule($person, 1, $tomorrow);
mailSchedule($person, 2, strtotime('+1 day', $tomorrow));
mailSchedule($person, 3, strtotime('+2 days', $tomorrow));
mailSchedule($person, 4, strtotime('+3 days', $tomorrow));
mailSchedule($person, 5, strtotime('+4 days', $tomorrow));
mailSchedule($person, 6, strtotime('+5 days', $tomorrow));
mailSchedule($person, 7, strtotime('+6 days', $tomorrow));
mailSchedule($person, 8, strtotime('+7 days', $tomorrow));
mailSchedule($person, 9, strtotime('+8 days', $tomorrow));
mailSchedule($person, 10, strtotime('+9 days', $tomorrow));
mailSchedule($person, 11, strtotime('+10 days', $tomorrow));
mailSchedule($person, 12, strtotime('+11 days', $tomorrow));
mailSchedule($person, 13, strtotime('+12 days', $tomorrow));
mailSchedule($person, 14, strtotime('+13 days', $tomorrow));
mailSchedule($person, 15, strtotime('+14 days', $tomorrow));
mailSchedule($person, 16, strtotime('+15 days', $tomorrow));
mailSchedule($person, 17, strtotime('+16 days', $tomorrow));
mailSchedule($person, 18, strtotime('+17 days', $tomorrow));
mailSchedule($person, 19, strtotime('+18 days', $tomorrow));
mailSchedule($person, 20, strtotime('+19 days', $tomorrow));
mailSchedule($person, 21, strtotime('+20 days', $tomorrow));
mailSchedule($person, 22, strtotime('+21 days', $tomorrow));
mailSchedule($person, 23, strtotime('+22 days', $tomorrow));
mailSchedule($person, 24, strtotime('+23 days', $tomorrow));
mailSchedule($person, 25, strtotime('+24 days', $tomorrow));
mailSchedule($person, 26, strtotime('+25 days', $tomorrow));
mailSchedule($person, 27, strtotime('+26 days', $tomorrow));
mailSchedule($person, 28, strtotime('+27 days', $tomorrow));
mailSchedule($person, 57, strtotime('+27 days + 15 hours', $tomorrow));
}

Wie muss ich diesen abändern, damit alle, die die Mail angeben, dann automatisch auch 21 Tage lang den Interventionsfragebogen zugesendet bekommen?
Gibt es eine leichtere Variante?
In diesem Fall brauche ich die Daten ja nicht mehr, sondern will einfach, dass die VP 21 Tage lang die eine Seite bekommen mit der Intervention (quasi eine normale Fragebogenseite, in der Stichworte angegeben werden). Danke!

1 Answer

0 votes
by SoSci Survey (369k points)

Wie muss ich diesen abändern, damit alle, die die Mail angeben, dann automatisch auch 21 Tage lang den Interventionsfragebogen zugesendet bekommen?

Wenn das zusätzliche E-Mails (abseits der 27 schon geplanten) sein soll, müssten sie noch 21 Serienmails erstellen und nochmal 21-mal mailSchedule() aufrufen.

Gibt es eine leichtere Variante?

Für das Erstellen der Serienmails nicht (natürlich kann man diese einfach duplizieren).

Für Ihre Code ja. Und zwar würden sie in einem Array die Serienmail-ID und den Zeitpunkt definieren und dann eine FOR-Schleife verwenden, um das zu terminieren.

$mails = [
  // MailID => Tage
  1 => '',
  2 => '+1 day',
  3 => '+2 days',
  4 => '+3 days',
  5 => '+4 days',
  ...
  57 => '+27 days + 15 hours'
];

$tomorrow = strtotime('tomorrow 17:00:00');
foreach ($mails as $id => $time) {
    mailSchedule($person, $id, strtotime($time, $tomorrow));
}

In diesem Fall brauche ich die Daten ja nicht mehr, sondern will einfach, dass die VP 21 Tage lang die eine Seite bekommen mit der Intervention (quasi eine normale Fragebogenseite, in der Stichworte angegeben werden). Danke!

Ob Sie Daten sammeln oder nicht, macht technisch keinen Unterschied, wenn Sie eine Fragebogen-Seite anzeigen.

by s199762 (200 points)
Vielen Dank. Ich habe es angepasst, da nur die 21 Interventionsbögen versendet werden sollen dann. Es findet sich auf der Seite davor die Seite mit Angabe der Mailadresse und auf der Seite der Interventionsfragebogen mit folgendem PHP-Code:

$mails = [
  // MailID => Tage
  1 => '',
  2 => '+1 day',
  3 => '+2 days',
  4 => '+3 days',
  5 => '+4 days',
  ...
  21 => '+20 days'
];

$tomorrow = strtotime('tomorrow 17:00:00');
foreach ($mails as $id => $time) {
    mailSchedule($person, $id, strtotime($time, $tomorrow));
}

Passt das so, dass jeder, der auf der Seite davor eine Mal angegeben hat, diese 21 FB bekommt?

Außerdem kam folgender Fehler:

Warnung: Unerwartetes Element: 21 - fehlt hier vielleicht ein Semikolon (;) oder Anführungszeichen?
$mails = [
  
  1 => '',
  2 => '+1 day',
  3 => '+2 days',
  4 => '+3 days',
  5 => '+4 days',
  ...
  21

Was soll ich tun?
by SoSci Survey (369k points)
Die drei Punkte aus meinem Beispiel müssen Sie bitte durch die korrekte Zuordnung ersetzen, welche Serienmail zu welchem Zeitpunkt ersetzt werden soll.

Ob die korrekte Terminierung der Serienmails funktioniert, sehen Sie z.B. in den Debug-Informationen: https://www.soscisurvey.de/help/doku.php/de:create:debugging
by s199762 (200 points)
Danke! Ich habe jetzt alles abgeändert. Sieht es so richtig aus?

$mails = [
  // MailID => Tage
  1 => '',
  2 => '+1 day',
  3 => '+2 days',
  4 => '+3 days',
  5 => '+4 days',
  6 => '+5 days',
  7 => '+6 days',
  8 => '+7 days',
  9 => '+8 days',
  10 => '+9 days',
  11 => '+10 days',
  12 => '+11 days',
  13 => '+12 days',
  14 => '+13 days',
  15 => '+14 days',
  16 => '+15 days',
  17 => '+16 days',
  18 => '+17 days',
  19 => '+18 days',
  20 => '+19 days',
  21 => '+20 days'
];

$tomorrow = strtotime('tomorrow 17:00:00');
foreach ($mails as $id => $time) {
    mailSchedule($person, $id, strtotime($time, $tomorrow));
}
by SoSci Survey (369k points)
Ja, dies ist nun eine übersichtlichere Version des Codes.
by s199762 (200 points)
Vielen Dank! Ich habe den Code genauso genutzt. Auf der Seite davor wurde die Mailadresse erhoben.
Was auch geklappt hat, dass die Mail dann bei den Adressen aufgeführt wird. Was jedoch leider nicht funktioniert hat ist dann der automatisierte Mailversand mit den 21 Serienmails, worüber jeweils die Intervention aufgerufen werden kann. Das sieht man hieran:


ID ↓    Beschreibung ↓     
    ID 1
E-Mail    → Erinnerungsmail 1 (Fragebogen: inter1)
Studie Sport & Stimmung - kurze Reflexion    duplizieren✉    X
    ID 2
E-Mail    → Erinnerungsmail 1 (Fragebogen: inter1)
Studie Sport & Stimmung - kurze Reflexion    duplizieren✉    X
11.02.2026, 17:00    Versand an 1 Empfänger

Mail 1 mit ID 1 müsste ja auch versendet werden. Der 1 Empfänger bezieht sich nicht auf diesen FB hat also auch nichts damit zu tun. Muss noch was beim Code abgeändert werden?

Mein Wunsch wäre, dass die erste Mail (ID1) dann einen Tag danach um 17 Uhr kommt, nachdem der erste FB ausgefüllt wurde und alle anderen Mails jeweils 24 h später (1 Tag danach, 2 Tage, ...).

Bsp.:
11.02 13 Uhr FB-Bearbeitung
12.02 17 Uhr erste Serienmail (ID 1)
13.02 17 Uhr zweite Serienmail (ID 2) usw.
by SoSci Survey (369k points)
Bitte posten Sie doch mal die Debug-Information, welche auf der Seite mit dem PHP-Code angezeigt wird. Danke.
by s199762 (200 points)
Klar gerne:

[Information]    Interview gestartet (neue Nummer 165)
[Information]    Der Fragebogen qnr5 im Projekt sportstudiemainz wird verwendet
[Verarbeitung]    Erstelle Seite 2 in Fragebogen qnr5
[Inhalt]    Erstelle Frage DI01
[Information]    Speicherbedarf RAM 8.8 MB (Seiteninhalt 0.0 MB)

Hilft das weiter?
by SoSci Survey (369k points)
Ich sehe in der Debug-Information gar keine Informationen, das Serinemails geplant würden. An welcher Stelle bekommt SoSci Survey denn die E-Mail-Adresse der Person? Falls dieser Fragebogen über eine Serienmail aufgerufen wird: Erstellen Sie bitte einen neuen Adresseintrag zum Testen, setzen Sie dort das Debug-Häkchen, verwenden Sie anschließend den Link-Button unten, um einen Teilnahmelink für die Serienmail zu erzeugen, und rufen Sie diesen Link dann auf.
by s199762 (200 points)
Vor der Intervention habe ich eine Seite "Opt-In für Email-Verteiler". Die Test-Mails stehe jetzt auch in meiner Adressliste, aber bei den Serienmails sieht man, dass nichts versendet wird, obwohl die IDs passen...


[Information]    Interview Nummer 167 wird fortgesetzt
[Information]    Der Fragebogen qnr5 im Projekt sportstudiemainz wird verwendet
[Information]    Die Verweildauer auf Seite 2 war 3 Sekunden
[Verarbeitung]    Lese Antworten von Seite 2
[Information]    Antwort auf DI01x01 = vdfvdf
[Information]    Keine Antwort für DI01x02
[Information]    Keine Antwort für DI01x03
[Information]    Keine Antwort für DI01x04
[Information]    Keine Antwort für DI01x05
[Information]    Antwort auf DI01x01 = vdfvdf
[Information]    Keine Antwort für DI01x02
[Information]    Keine Antwort für DI01x03
[Information]    Keine Antwort für DI01x04
[Information]    Keine Antwort für DI01x05
[Information]    Antwort auf DI01 = 1
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Information]    Verarbeitung der Antworten mittels PHP (Seite 2)
[Warnung]    Kein Versand der Serienmail 1 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 2 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 3 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 4 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 5 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 6 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 7 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 8 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 9 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 10 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 11 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 12 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 13 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 14 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 15 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 16 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 17 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 18 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 19 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 20 mangels Personenkennung/Adressat.
[Warnung]    Kein Versand der Serienmail 21 mangels Personenkennung/Adressat.
[Verarbeitung]    Erstelle die letzte Seite des Fragebogens
[Information]    Setze STATUS = complete
by SoSci Survey (369k points)
Ist das ein Single- oder Double-Opt-Int?

Oder um die Frage anders zu formulieren: Taucht die E-Mail-Adresse erst in der Adressliste auf oder kommt erst die Debug-Info "Kein Versand der Serienmail mangels Personenkennung/Adressat."?

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

...