Email spool : file d'attente quand envoi echoue, retry toutes les 60s
- Si l'envoi SMTP echoue (pas de connexion, config incomplete, etc.), l'email est stocke dans data/email_spool.json - Tache asyncio periodique (60s) tente de vider le spool - L'adresse est quand meme ajoutee a l'historique de suggestions - Frontend affiche "Email en file d'attente" au lieu de "Erreur" Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,7 @@ from backend.effects import appliquer_filtre, appliquer_overlay, chroma_key, lis
|
||||
from backend.collage import creer_strip, creer_collage
|
||||
from backend.destinations import distribuer_photo, detecter_usb, compteur_restant, reset_compteur, recuperer_booth_password
|
||||
from backend.printer import lister_imprimantes, imprimer
|
||||
from backend.mailer import envoyer_photo, charger_emails_historique, effacer_emails_historique
|
||||
from backend.mailer import envoyer_photo, charger_emails_historique, effacer_emails_historique, ajouter_au_spool, taille_spool, tache_spool_periodique
|
||||
from backend.qrcode_gen import generer_qr, qr_galerie
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(name)s] %(message)s")
|
||||
@@ -187,9 +187,11 @@ async def lifespan(app: FastAPI):
|
||||
t.start()
|
||||
task_dslr = asyncio.create_task(surveiller_dslr())
|
||||
task_push = asyncio.create_task(_pusher_preview())
|
||||
task_spool = asyncio.create_task(tache_spool_periodique())
|
||||
yield
|
||||
task_dslr.cancel()
|
||||
task_push.cancel()
|
||||
task_spool.cancel()
|
||||
log.info("Arret du photobooth")
|
||||
camera.deconnecter()
|
||||
|
||||
@@ -774,7 +776,11 @@ async def api_email(donnees: dict):
|
||||
if not chemin.exists():
|
||||
return JSONResponse({"erreur": "Photo introuvable"}, status_code=404)
|
||||
ok = envoyer_photo(email_dest, chemin)
|
||||
return {"succes": ok}
|
||||
if ok:
|
||||
return {"succes": True}
|
||||
ajouter_au_spool(email_dest, str(chemin))
|
||||
_sauvegarder_email_historique(email_dest)
|
||||
return {"succes": True, "spool": True, "en_attente": taille_spool()}
|
||||
|
||||
|
||||
@app.get("/api/emails/historique")
|
||||
|
||||
Reference in New Issue
Block a user