Liebes SoSci Survey Team,
ich führe gerade eine längsschnittliche Erhebung mit Selbstrekrutierung durch (Baseline-Fragebogenlink: https://sosci.zdv.uni-mainz.de/spv/). Die Baseline-Erhebung und die Anmeldung für weitere Befragungen erfolgte bisher auch wunderbar. Nun stand heute der Versand der ersten Serienmail (Mailnummer 91) an und eine Teilnehmerin erhält bei Klick auf den Fragebogenlink stets folgende Fehlermeldung: „Zugriff verweigert Der übermittelte Zugangsschlüssel ist nicht oder nicht mehr gültig.“
Folgenden Code hatte ich verwendet, um die Serienmails nach Bestätigung der E-Mail-Adresse (Double-Opt-In) zu verschicken:
$info = panelData();
if ($info) {
$group = $info['subgroup'];
if ($group == 'AV') {
mailSchedule(false, 91, strtotime('+7 days'), ['expire'=> strtotime('+6 days')]); //Woche 1
mailSchedule(false, 92, strtotime('+11 days'), ['status' => 'incomplete']);
mailSchedule(false, 52, strtotime('+14 days'), ['expire'=> strtotime('+6 days')]); //Woche 2
mailSchedule(false, 53, strtotime('+18 days'), ['status' => 'incomplete']);
mailSchedule(false, 54, strtotime('+21 days'), ['expire'=> strtotime('+6 days')]); //Woche 3
mailSchedule(false, 55, strtotime('+25 days'), ['status' => 'incomplete']);
mailSchedule(false, 56, strtotime('+28 days'), ['expire'=> strtotime('+6 days')]); //Woche 4
mailSchedule(false, 57, strtotime('+32 days'), ['status' => 'incomplete']);
mailSchedule(false, 58, strtotime('+35 days'), ['expire'=> strtotime('+6 days')]); //Woche 5
mailSchedule(false, 59, strtotime('+39 days'), ['status' => 'incomplete']);
mailSchedule(false, 60, strtotime('+42 days'), ['expire'=> strtotime('+6 days')]); //Woche 6
mailSchedule(false, 61, strtotime('+46 days'), ['status' => 'incomplete']);
mailSchedule(false, 62, strtotime('+49 days'), ['expire'=> strtotime('+6 days')]); //Woche 7
mailSchedule(false, 63, strtotime('+53 days'), ['status' => 'incomplete']);
mailSchedule(false, 64, strtotime('+56 days'), ['expire'=> strtotime('+6 days')]); //Woche 8
mailSchedule(false, 65, strtotime('+60 days'), ['status' => 'incomplete']);
mailSchedule(false, 66, strtotime('+63 days'), ['expire'=> strtotime('+6 days')]); //Woche 9
mailSchedule(false, 67, strtotime('+67 days'), ['status' => 'incomplete']);
mailSchedule(false, 68, strtotime('+70 days'), ['expire'=> strtotime('+6 days')]); //Woche 10
mailSchedule(false, 69, strtotime('+74 days'), ['status' => 'incomplete']);
mailSchedule(false, 70, strtotime('+77 days'), ['expire'=> strtotime('+6 days')]); //Woche 11
mailSchedule(false, 71, strtotime('+81 days'), ['status' => 'incomplete']);
mailSchedule(false, 76, strtotime('+84 days'), ['expire'=> strtotime('+6 days')]); //Woche 12
mailSchedule(false, 77, strtotime('+88 days'), ['status' => 'incomplete']);
mailSchedule(false, 84, strtotime('+168 days'), ['expire'=> strtotime('+6 days')]); //Follow-Up 3 Monate
mailSchedule(false, 85, strtotime('+172 days'), ['status' => 'incomplete']);
mailSchedule(false, 80, strtotime('+252 days'), ['expire'=> strtotime('+6 days')]); //t3
mailSchedule(false, 81, strtotime('+256 days'), ['status' => 'incomplete']);
mailSchedule(false, 82, strtotime('+336 days'), ['expire'=> strtotime('+6 days')]); //t4
mailSchedule(false, 83, strtotime('+340 days'), ['status' => 'incomplete']);
} else {
mailSchedule(false, 2, strtotime('+14 days'), ['expire'=> strtotime('+7 days')]); // t0_1
mailSchedule(false, 3, strtotime('+18 days'), ['status' => 'incomplete']);
mailSchedule(false, 4, strtotime('+28 days'), ['expire'=> strtotime('+7 days')]); // t0_2
mailSchedule(false, 5, strtotime('+32 days'), ['status' => 'incomplete']);
mailSchedule(false, 6, strtotime('+42 days'), ['expire'=> strtotime('+7 days')]); // t0_3
mailSchedule(false, 7, strtotime('+46 days'), ['status' => 'incomplete']);
mailSchedule(false, 8, strtotime('+56 days'), ['expire'=> strtotime('+7 days')]); // t0_4
mailSchedule(false, 9, strtotime('+60 days'), ['status' => 'incomplete']);
mailSchedule(false, 10, strtotime('+70 days'), ['expire'=> strtotime('+7 days')]); // t0_5
mailSchedule(false, 11, strtotime('+74 days'), ['status' => 'incomplete']);
mailSchedule(false, 12, strtotime('+84 days'), ['expire'=> strtotime('+7 days')]); // t1
mailSchedule(false, 13, strtotime('+88 days'), ['status' => 'incomplete']);
mailSchedule(false, 14, strtotime('+98 days'), ['expire'=> strtotime('+7 days')]); // t1_1
mailSchedule(false, 15, strtotime('+102 days'), ['status' => 'incomplete']);
mailSchedule(false, 16, strtotime('+112 days'), ['expire'=> strtotime('+7 days')]); // t1_2
mailSchedule(false, 17, strtotime('+116 days'), ['status' => 'incomplete']);
mailSchedule(false, 18, strtotime('+126 days'), ['expire'=> strtotime('+7 days')]); // t1_3
mailSchedule(false, 19, strtotime('+130 days'), ['status' => 'incomplete']);
mailSchedule(false, 20, strtotime('+140 days'), ['expire'=> strtotime('+7 days')]); // t1_4
mailSchedule(false, 21, strtotime('+144 days'), ['status' => 'incomplete']);
mailSchedule(false, 22, strtotime('+154 days'), ['expire'=> strtotime('+7 days')]); // t1_5
mailSchedule(false, 23, strtotime('+158 days'), ['status' => 'incomplete']);
mailSchedule(false, 24, strtotime('+168 days'), ['expire'=> strtotime('+7 days')]); // t2
mailSchedule(false, 25, strtotime('+172 days'), ['status' => 'incomplete']);
mailSchedule(false, 26, strtotime('+182 days'), ['expire'=> strtotime('+7 days')]); // t2_1
mailSchedule(false, 27, strtotime('+186 days'), ['status' => 'incomplete']);
mailSchedule(false, 28, strtotime('+196 days'), ['expire'=> strtotime('+7 days')]); // t2_2
mailSchedule(false, 29, strtotime('+200 days'), ['status' => 'incomplete']);
mailSchedule(false, 30, strtotime('+210 days'), ['expire'=> strtotime('+7 days')]); // t2_3
mailSchedule(false, 31, strtotime('+214 days'), ['status' => 'incomplete']);
mailSchedule(false, 32, strtotime('+224 days'), ['expire'=> strtotime('+7 days')]); // t2_4
mailSchedule(false, 33, strtotime('+228 days'), ['status' => 'incomplete']);
mailSchedule(false, 34, strtotime('+238 days'), ['expire'=> strtotime('+7 days')]); // t2_5
mailSchedule(false, 35, strtotime('+242 days'), ['status' => 'incomplete']);
mailSchedule(false, 36, strtotime('+252 days'), ['expire'=> strtotime('+7 days')]); // t3
mailSchedule(false, 37, strtotime('+256 days'), ['status' => 'incomplete']);
mailSchedule(false, 38, strtotime('+266 days'), ['expire'=> strtotime('+7 days')]); // t3_1
mailSchedule(false, 39, strtotime('+270 days'), ['status' => 'incomplete']);
mailSchedule(false, 40, strtotime('+280 days'), ['expire'=> strtotime('+7 days')]); // t3_2
mailSchedule(false, 41, strtotime('+284 days'), ['expire' => 'incomplete']);
mailSchedule(false, 42, strtotime('+294 days'), ['expire'=> strtotime('+7 days')]); // t3_3
mailSchedule(false, 43, strtotime('+298 days'), ['expire' => 'incomplete']);
mailSchedule(false, 44, strtotime('+308 days'), ['expire'=> strtotime('+7 days')]); // t3_4
mailSchedule(false, 45, strtotime('+312 days'), ['status' => 'incomplete']);
mailSchedule(false, 46, strtotime('+322 days'), ['expire'=> strtotime('+7 days')]); // t3_5
mailSchedule(false, 47, strtotime('+326 days'), ['status' => 'incomplete']);
mailSchedule(false, 48, strtotime('+336 days'), ['expire'=> strtotime('+7 days')]); // t4
mailSchedule(false, 49, strtotime('+340 days'), ['status' => 'incomplete']);
}
} else {
// Fehlermeldung anzeigen, dass der Fragebogen nicht mit einem gültigen Teilnahmeschlüssel
// aufgerufen wurde (z.B. nicht aus einer Serienmail heraus) oder dass der Adresseintrag
// mittlerweile aus der Adressliste gelöscht wurde
text('some-error');
}
Kann es sein, dass sich die ‚expire‘ – Funktion auf den Zeitpunkt der allerersten Mail (1 – Double-Opt-In) und nicht auf den Versand der entsprechenden Serienmail (91) bezieht? Also alle weiter versandten Fragebögen bereits 6 Tage nach Bestätigung der E-Mail-Adresse nicht mehr gültig sind? Und der Code eigentlich folgendermaßen lauten müsste:
$info = panelData();
if ($info) {
$group = $info['subgroup'];
if ($group == 'AV') {
mailSchedule(false, 91, strtotime('+7 days'), ['expire'=> strtotime('+13 days')]); //Woche 1
mailSchedule(false, 92, strtotime('+11 days'), ['status' => 'incomplete']);
mailSchedule(false, 52, strtotime('+14 days'), ['expire'=> strtotime('+20 days')]); //Woche 2
mailSchedule(false, 53, strtotime('+18 days'), ['status' => 'incomplete']);
mailSchedule(false, 54, strtotime('+21 days'), ['expire'=> strtotime('+27 days')]); //Woche 3
…
Ich habe sicherheitshalber die ‚expire‘-Daten schon einmal umgestellt. Falls der Grund für die Verweigerung des Zugriffs in der falschen Zahl liegt, wie stelle ich nun während der laufenden Erhebung am besten sicher, dass alle Personen den richtigen Fragebogen zum richtigen Zeitpunkt erhalten?
Oder gibt es eine alternative Erklärung dafür, dass der Zugriff verweigert wird? Bei allen Fragebögen ist Serienmail als Zugriffsoption eingestellt und bei den Serienmails ist unter „Fragebogen-Link -> Gültigkeit begrenzen“ nichts eingetragen.
Herzlichen Dank im Voraus und freundliche Grüße