- Transporteur SMTP réutilisé (pool) au lieu d'une auth par email
- 3 tentatives avec backoff sur erreurs 454/timeout/coupure Dovecot
- refuseUser renvoie 503 si un email de refus échoue après retry
- Tests unitaires isTransientSmtpError
Co-authored-by: Cursor <cursoragent@cursor.com>
- `refuseUser` charge tous les parents du même numéro de dossier, leur
applique le même token_reprise (7 jours), trace une validation refus
par compte et envoie un mail de refus à chacun. Le refus devient une
action dossier : peu importe quel parent ouvre ensuite le lien.
- Échec d'envoi mail loggé sans bloquer les autres destinataires.
- Mail de refus aligné sur le look des autres templates (titre/bouton
verts, bloc motif gestionnaire en encart, échappement HTML cohérent,
appUrl normalisée).
Co-authored-by: Cursor <cursoragent@cursor.com>