Resout le probleme de firewall SMTP corporate qui bloque outbound 25/465/587 depuis
les postes de travail. Outlook utilise HTTPS (EWS/Graph) vers O365 -> aucun firewall.
Service mail_outlook_com.py:
- send_via_outlook_com(to, subject, html, cc, display_only): pilote Outlook via COM
pywin32. Mail apparait dans Sent Items du user, traçable.
- Mode display_only=True ouvre la fenetre de composition Outlook au lieu d'envoyer
automatiquement (relecture manuelle).
- pythoncom.CoInitialize() pour fonctionner dans un thread uvicorn.
Service mail_service.py:
- send_html_mail dispatche selon Setting 'mail_backend' (smtp / outlook_com).
- Defaut = smtp.
Settings:
- 'mail_backend' = 'smtp' | 'outlook_com'
- 'mail_outlook_display_only' = 'true' | 'false'
- UI: 2 selects en haut de la card SMTP avec hints + le SMTP existant en dessous
Pre-requis Windows: pip install pywin32 + Outlook lance + connecte au compte O365.
- Service mail_service.py: send_html_mail via SMTP standard (host/port/user/pass/from/use_tls
depuis Settings > SMTP). Gere SSL_465 et STARTTLS_587. Mode dry_run pour preview.
- Settings: nouvelle section 'smtp' avec smtp_host/port/user/pass/from/use_tls/pct_recipient
(a configurer pour O365 SMTP submission)
- Router planning_import.py:
* _build_pct_email(): construit subject + HTML pro/colore (header bleu degrade SANEF,
cards avec border-left bleu/orange, tableau serveurs, footer)
* Subject: 'Intervention sur <app>' si app uniforme, sinon liste des serveurs
* Plage horaire = 20 min × N serveurs (formattee Hh MM)
* 'Moyen d'exploitation prevu : Rollback en cas de probleme' ajoute en bas
* _fetch_pct_cc_emails(): query distinct contacts depuis responsable_domaine_contact_id
+ referent_technique_contact_id + server_additional_referents
* Endpoint POST /patching/import/pct-prevenance/preview retourne {subject, html, to, cc,
smtp_configured, row_count} sans envoyer
* Endpoint POST /patching/import/pct-prevenance/send envoie reellement, audit log,
update pct_mail_sent_at sur les rows
- Template patching_import.html:
* Bouton 'Prevenance PCT' (violet) a cote des autres actions
* Modal preview avec iframe sandboxe pour le rendu HTML mail
* Affiche destinataires, CC, objet, count serveurs
* Warning rouge si SMTP non configure (envoi desactive, preview seulement)
* 2 boutons: Annuler / Envoyer (avec confirmation)