Ajout d'une option graceful sur les envois qui evite d'envoyer la meme newsletter a un email qui l'a deja recue
Cela s'accompagne d'une option dans le formulaire d'envoi, sur les newsletters, decochee par defaut : [ ] Envoyer à nouveau aux destinataires qui l'ont déjà reçue
(par defaut donc, desormais, on n'envoie plus en double)
Techniquement il y a un champ graceful en base sur les mailshots.
Par contre quand on construit la liste des destinataires on enumere bien tous les destinataires comme avant, mais simplement pour chaque envoi on verifie d'abord si cet email a deja recu la newsletter et si oui on recupere directement le statut et la date du dernier envoi sans rien faire
(le destinataire apparait donc bien dans la liste, en sent ou read ou open, avec la date de l'envoi precedent)
A priori ca doit marcher, mais je n'ai pas encore teste en live
sql_updateq("spip_mailshots_destinataires",array('statut'=>'fail','try'=>$try,'date'=>date('Y-m-d H:i:s')),"id_mailshot=".intval($shoot['id_mailshot'])." AND email=".sql_quote($d['email']));
// si c'est un fail max_try verifier et desinscrire eventuellement
if ($try>1){
mailshot_verifier_email_fail($d['email']);
}
}
else {
$done = array(
'try' => $try,
'date'=>date('Y-m-d H:i:s'),
'log' => "INFO Probleme [$erreur] (essai $try)",
);
}
}
else {
sql_updateq("spip_mailshots_destinataires",array('try'=>$try,'date'=>date('Y-m-d H:i:s')),"id_mailshot=".intval($shoot['id_mailshot'])." AND email=".sql_quote($d['email']));
spip_log("mailshot_envoyer_lot #".$shoot['id_mailshot']."/".$d['email']." : Probleme [$erreur] (essai $try)","mailshot"._LOG_INFO_IMPORTANTE);
$done = array(
'done' => true,
'statut'=>'sent',
'try'=>$try,
'date'=>date('Y-m-d H:i:s'),
'log' => "OK",
);
}
}
else {
$nb_restant--;
sql_updateq("spip_mailshots_destinataires",array('statut'=>'sent','try'=>$try,'date'=>date('Y-m-d H:i:s')),"id_mailshot=".intval($shoot['id_mailshot'])." AND email=".sql_quote($d['email']));