Ceci est une ancienne révision du document !
Script de Génération de template mail outlook
À adapter en fonction du contexte. Les templates de base doivent être au format HTML et contenir les variables sous la forme {variable}.
Requis : pywin2
import win32com.client as win32 #fonction menu def menu(): print("Choisissez un template : ") print("1: Notification d'incident") print("2: Notification de fin d'incident") choix = input("Entrez le numéro de votre choix : ") if choix == '1': incident_notif() elif choix == '2': fin_incident_notif() else: print("Choix invalide, fin du programme.") #fonction notification d'incident def incident_notif(): # Demande des infos à l'utilisateur destinatairesprincipaux = input("Entrez les adresses mail des destinataires principaux (séparer les adresses avec un ;) : ") destinatairessecondaires = input("Entrez les adresses mail en copie (séparer les adresses avec un ;) : ") client = input("Client concerné : ") description = input("Description de l'incident : ") start_date = input("Date de début d'incident : ") start_time = input("Heure de début d'incident (UTC sinon préciser): ") duree = input("Durée de l'incident : ") equipement = input("Equipement(s) concerné(s) : ") incident_ref = input("Ticket OCEANE / SNOW : ") impact = input("Impact client : ") # Demander à l'utilisateur de choisir la gravité : choix_severite = input("Gravité de l'incident (1, 2 ou 3) : ") # Initialiser les cases severite1 = "[ ] 1" severite2 = "[ ] 2" severite3 = "[ ] 3" # Mettre à jour en fonction du choix if choix_severite == '1': severite1 = "[X] 1" elif choix_severite == '2': severite2 = "[X] 2" elif choix_severite == '3': severite3 = "[X] 3" else: print("Choix invalide, aucune case cochée.") statut = input("Statut actuel : ") ttr = input("Temps de réparation estimé : ") next_actions = input("Prochaines actions : ") next_update = input("Prochaine mise à jour : ") incident_owner = input("Responsable de l'incident : ") # Concatenne les variables sujetmail = "Security Incident Notification || " + client + " || " + incident_ref + " || " + equipement + " || " + description destinataires = "security.incident-mngt@orange.com;cso_itd_sec_inc_notif_l1@orange.com;" + destinatairesprincipaux destinatairescopie = "itd-soc-france@orange.com;mickael.fleury@orange.com;" + destinatairessecondaires # Charger le template HTML depuis un fichier externe with open('template_incident_notification.html', 'r', encoding='utf-8') as file: template_html = file.read() # Insérer toutes les variables dans le body contenu_html = template_html.format( client=client, description=description, start_date=start_date, start_time=start_time, equipement=equipement, duree=duree, incident_ref=incident_ref, impact=impact, severite1=severite1, severite2=severite2, severite3=severite3, statut=statut, ttr=ttr, next_actions=next_actions, next_update=next_update, incident_owner=incident_owner ) # Créer et afficher le mail Outlook outlook = win32.Dispatch('outlook.application') mail = outlook.CreateItem(0) mail.Subject = sujetmail mail.To = destinataires mail.CC = destinatairescopie mail.HTMLBody = contenu_html mail.Display() #fonction notification de fin d'incident def fin_incident_notif(): # Demande des infos à l'utilisateur destinatairesprincipaux = input("Entrez les adresses mail des destinataires principaux (séparer les adresses avec un ;) : ") destinatairessecondaires = input("Entrez les adresses mail en copie (séparer les adresses avec un ;) : ") client = input("Client concerné : ") description = input("Description de l'incident : ") start_date = input("Date de début d'incident : ") start_time = input("Heure de début d'incident (UTC sinon préciser): ") duree = input("Durée de l'incident : ") equipement = input("Equipement(s) concerné(s) : ") incident_ref = input("Ticket OCEANE / SNOW : ") impact = input("Impact client : ") # Demander à l'utilisateur de choisir la gravité : choix_severite = input("Gravité de l'incident (1, 2 ou 3) : ") # Initialiser les cases severite1 = "[ ] 1" severite2 = "[ ] 2" severite3 = "[ ] 3" # Mettre à jour en fonction du choix if choix_severite == '1': severite1 = "[X] 1" elif choix_severite == '2': severite2 = "[X] 2" elif choix_severite == '3': severite3 = "[X] 3" else: print("Choix invalide, aucune case cochée.") statut = input("Statut actuel : ") ttr = input("Temps de réparation estimé : ") next_actions = input("Prochaines actions : ") next_update = input("Prochaine mise à jour : ") incident_owner = input("Responsable de l'incident : ") # Concatenne les variables sujetmail = "Security Incident Closure || " + client + " || " + incident_ref + " || " + equipement + " || " + description destinataires = "security.incident-mngt@orange.com;cso_itd_sec_inc_notif_l1@orange.com;" + destinatairesprincipaux destinatairescopie = "itd-soc-france@orange.com;mickael.fleury@orange.com;" + destinatairessecondaires # Charger le template HTML depuis un fichier externe with open('template_incident_closure.html', 'r', encoding='utf-8') as file: template_html = file.read() # Insérer toutes les variables dans le body contenu_html = template_html.format( client=client, description=description, start_date=start_date, start_time=start_time, equipement=equipement, duree=duree, incident_ref=incident_ref, impact=impact, severite1=severite1, severite2=severite2, severite3=severite3, statut=statut, ttr=ttr, next_actions=next_actions, next_update=next_update, incident_owner=incident_owner ) # Créer et afficher le mail Outlook outlook = win32.Dispatch('outlook.application') mail = outlook.CreateItem(0) mail.Subject = sujetmail mail.To = destinataires mail.CC = destinatairescopie mail.HTMLBody = contenu_html mail.Display() # appel du menu menu()