Et ca ne serait pas possible de lancer l operation (d envoie d email pour prévenir) dans un thread ?
C'est ce qu'on fait parfois. L'autre solution consiste à alimenter un système de stockage en mémoire (file de messages, redis, …) et d'avoir un thread (worker) dédié à la scrutation de cette file et d'envoi des messages périodiquement. La gestion des erreurs est faite dans ce thread (ignore, de toute façon on verra bien à la prochaine scrutation. ou réessaie N fois, …). Plus la période de scrutation est faible, moins il y a d'éléments à dépiler à chaque scrutation et plus la réactivité pour l'utilisateur est grande.
Ca permet d'avoir deux composants totalement indépendants (potentiellement écrits avec des technos différentes, d'ailleurs) avec un minimum de couplage.