IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Envoi de mail condition [Python 3.X]


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 33
    Par défaut Envoi de mail condition
    Bonjour,

    J'espère que vous allez bien

    Me revoila encore mais cette fois-ci c'est la dernière fois du moins je l'espère ^^

    Du coup j'ai crée un script qui analyse un tableau excel en .csv et en fonction si il trouve la valeur qui correspond a une requet il créer l'incident et me mets l'element de configuration dans mon ticket.
    Maintenant mon soucis sa serait si il ne trouve pas la valeur dans le tableau qui envoie un mail avec la valeur qui existe pas...
    J'ai déjà mis en place le script d'envoie de mail aussi

    La requete en powershell est : .\python '.\Service Now WEB API v3.3.py' XCTMHOMO1 GX10ARCH01 GX10HARCH0060 GX10 160731

    Donc dans mon tableau j'ai bien GX10 crée l'incident mais quand je n'ai pas GX10 dans mon tableau j'aimerais qu'il envoie un mail automatiquement mais sa ne marche pas dans mon script

    J'ai beau chercher mais je sèche... Est ceux que une âme charitable aurait la solution ?

    Il m'affiche KeyError : 'GX100" mais n'envoie pas de mail

    Screen :

    Nom : email.png
Affichages : 1145
Taille : 182,3 Ko

    Merci d'avance

    Cordialement

    Fataly

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Ca serait bien de poster votre code en utilisant la balise CODE.

    Lorsque vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for row in reader:
         if row[0] not in dico:
            dico[row[0]] = ...
         else:   
            ...
    vous devriez comprendre que les instructions sous le "else" seront exécutées dès qu'une ligne commence par une chaîne de caractère déjà rencontrée dans le fichier.
    Et pour savoir qu'aucune ligne ne commence par GX10, il faut regarder dico après avoir lu tout le fichier i.e. après la boucle "for row in reader" et non pendant.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 33
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Ca serait bien de poster votre code en utilisant la balise CODE.

    Lorsque vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for row in reader:
         if row[0] not in dico:
            dico[row[0]] = ...
         else:   
            ...
    vous devriez comprendre que les instructions sous le "else" seront exécutées dès qu'une ligne commence par une chaîne de caractère déjà rencontrée dans le fichier.
    Et pour savoir qu'aucune ligne ne commence par GX10, il faut regarder dico après avoir lu tout le fichier i.e. après la boucle "for row in reader" et non pendant.

    - W
    Salut,

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    import http.client
    import sys
    import csv
    import smtplib
     
    MAILTMP = sys.argv[1]
    GROUP = sys.argv[2]
    JOBNAME = sys.argv[3]
    APPLICATION = sys.argv[4]
    ODATE = sys.argv[5]
    DESCRIPTION = JOBNAME
     
    fname = "tableau.csv"
    file = open(fname, "r")
     
    dico = {}
     
    try:
     
        reader = csv.reader(file, delimiter=';')
     
        for row in reader:
            if not (row[0] in dico ):
                dico [row[0]] = row[1]
            #except KeyError:
                #pass
            else:
                #print ("Attention, un doublon a été repéré !")
                server = smtplib.SMTP()
                #server.set_debuglevel(1) # Décommenter pour activer le debug
                server.connect('mg-smtp.mgsi.mg.com.fr')
                # (220, 'toto ESMTP Postfix') # Réponse du serveur
                server.helo()
                # (250, 'toto\nPIPELINING\nSIZE 10240000\nVRFY\nETRN\nSTARTTLS\nENHANCEDSTATUSCODES\n8BITMIME\nDSN') # Réponse du serveur
                fromaddr = 'CONTROLM_PROD<CONTROL-M_PRODUCTION@taores.fr>'
                toaddrs = ['daye.camara@taores.fr'] # On peut mettre autant d'adresses que l'on souhaite
                sujet = "Information CMDB"
                message = u"""\
                Bonjour, \n
                """
                msg = """\
                From: %s\r\n\
                To: %s\r\n\
                Subject: %s\r\n\
                \r\n\
                %s
                Bonjour, \n
                L'application %s n'est pas presente ou est en doublons dans la CMDB\n
                Nom du job : %s \n
                Bonne analyse \n
                Merci :) \n
                """ % (fromaddr, ", ".join(toaddrs), sujet, message, dico[APPLICATION], JOBNAME)
                try:
                    server.sendmail(fromaddr, toaddrs, msg)
                except smtplib.SMTPException as e:
                    print(e)
                # {} # Réponse du serveur
                server.quit()
                # (221, '2.0.0 Bye') # Réponse du serveur
    finally:
        file.close()
    J'ai compris maintenant à peu prêt je vais essayer de corriger mon erreur merci pour la piste.

    PS : J'ai jamais fait de python après , merci pour le temps que vous m'accorder

    A 16h23 :

    J'ai modifier mon code donc je fais autrement, vue que c'est un serveur en controlM qui va faire la requête je vais lui ordonnée de faire un GET de la variable et puis envoyé un mail... Je réfléchis encore pour le code.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Fataly Voir le message
    Je réfléchis encore pour le code.
    Plutôt que de vous prendre le chou avec l'envoi de mail, essayez de vous concentrer sur ces quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import http.client
    import sys
    import csv
    import smtplib
     
    MAILTMP = sys.argv[1]
    GROUP = sys.argv[2]
    JOBNAME = sys.argv[3]
    APPLICATION = sys.argv[4]
    ODATE = sys.argv[5]
    DESCRIPTION = JOBNAME
     
    fname = "tableau.csv"
    file = open(fname, "r")
     
    dico = {}
     
    try:
     
        reader = csv.reader(file, delimiter=';')
     
        for row in reader:
            if not (row[0] in dico ):
                dico [row[0]] = row[1]
            #except KeyError:
                #pass
            else:
                print (dico[APPLICATION])
    finally:
        file.close()
    et comprendre le pourquoi du KeyError...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 33
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Plutôt que de vous prendre le chou avec l'envoi de mail, essayez de vous concentrer sur ces quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import http.client
    import sys
    import csv
    import smtplib
     
    MAILTMP = sys.argv[1]
    GROUP = sys.argv[2]
    JOBNAME = sys.argv[3]
    APPLICATION = sys.argv[4]
    ODATE = sys.argv[5]
    DESCRIPTION = JOBNAME
     
    fname = "tableau.csv"
    file = open(fname, "r")
     
    dico = {}
     
    try:
     
        reader = csv.reader(file, delimiter=';')
     
        for row in reader:
            if not (row[0] in dico ):
                dico [row[0]] = row[1]
            #except KeyError:
                #pass
            else:
                print (dico[APPLICATION])
    finally:
        file.close()
    et comprendre le pourquoi du KeyError...

    - W
    Salut,

    Le KeyErrorapparait car une valeur n'existe pas dans le tableau et c'est ceux qui m'arrange. Car dans notre base de donner on a beaucoup de job controlM qu'on ne peux pas répertoriée pour x raison d’où j'aimerais récupérer la valeur du KeyError

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Fataly Voir le message
    Le KeyError apparait car une valeur n'existe pas dans le tableau et c'est ceux qui m'arrange. Car dans notre base de donner on a beaucoup de job controlM qu'on ne peux pas répertoriée pour x raison d’où j'aimerais récupérer la valeur du KeyError
    La vous me racontez à quoi servira votre code le jour où il fonctionnera. Moi, je vous demande d'essayer de comprendre pourquoi le code que vous avez écrit ne peut pas fonctionner.
    Votre code fait la même chose que le bout de code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> d = {}
    >>> for ch in 'aba':
    ...     if ch not in d:
    ...        d[ch] = 1
    ...     else:
    ...        print (ch, d.get('c'))
    ...
    a None
    >>>
    vous voyez c'est beaucoup plus simple... et les questions sont:
    • pourquoi va-t-il dans le else lorsqu'il rencontre le deuxième "a" et
    • pourquoi "c" n'a aucune chance d'être dans le dictionnaire d dans ce cas.

    note: si un des lecteurs de cette discussion a envie d'écrire le code à votre place... tant mieux pour vous ou plutôt tant pis car ce n'est pas en recopiant bêtement du code aussi simple que vous apprendrez à programmer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 33
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    La vous me racontez à quoi servira votre code le jour où il fonctionnera. Moi, je vous demande d'essayer de comprendre pourquoi le code que vous avez écrit ne peut pas fonctionner.
    Votre code fait la même chose que le bout de code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> d = {}
    >>> for ch in 'aba':
    ...     if ch not in d:
    ...        d[ch] = 1
    ...     else:
    ...        print (ch, d.get('c'))
    ...
    a None
    >>>
    vous voyez c'est beaucoup plus simple... et les questions sont:
    • pourquoi va-t-il dans le else lorsqu'il rencontre le deuxième "a" et
    • pourquoi "c" n'a aucune chance d'être dans le dictionnaire d dans ce cas.

    note: si un des lecteurs de cette discussion a envie d'écrire le code à votre place... tant mieux pour vous ou plutôt tant pis car ce n'est pas en recopiant bêtement du code aussi simple que vous apprendrez à programmer.

    - W
    Loin de la je n'ai pas demander à qu'on me face le code à ma place je ne vois pas l'utilité honnêtement.

    Mon bout de code ne fonctionne pas car une valeur n'existe pas dans le tableau, mais si on essaye avec une valeur qui existe dans le tableau je n'ai aucune erreur. D’où ma question était comment récupérer la valeur qui n'existe pas dans le tableau. A aucun moment j'ai demander qu'on code à ma place une fois de plus...

  8. #8
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut
    Salut

    [*]pourquoi va-t-il dans le else lorsqu'il rencontre le deuxième "a"
    Lorsqu'il rencontre le premier a qui n'est pas dans d car d est vide à ce moment là (initialisation de d en début de script d={}) il réalise la condition if ch not in qui consiste à ajouter au dictionnaire d la variable a et lui associe la valeur 1 {'a':1}. Oui mais lorsqu'il arrive au dernier a, celui ci existe dans le dictionnaire d, donc il ne respecte plus la condition if not in et va donc voir ce qui se passe dans le else.

    [*]pourquoi "c" n'a aucune chance d'être dans le dictionnaire d dans ce cas.
    Tout simplement parce qu'à aucun moment c n'est introduit dans le dictionnaire d.

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 33
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    Salut



    Lorsqu'il rencontre le premier a qui n'est pas dans d car d est vide à ce moment là (initialisation de d en début de script d={}) il réalise la condition if ch not in qui consiste à ajouter au dictionnaire d la variable a et lui associe la valeur 1 {'a':1}. Oui mais lorsqu'il arrive au dernier a, celui ci existe dans le dictionnaire d, donc il ne respecte plus la condition if not in et va donc voir ce qui se passe dans le else.



    Tout simplement parce qu'à aucun moment c n'est introduit dans le dictionnaire d.
    Salut je l'ai compris cette erreur là, il a simplement simplifié le code autrement pour que je comprenne mieux. Je pense avoir la solution final... affaire à suivre

  10. #10
    Invité de passage
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2016
    Messages : 1
    Par défaut envoi automatique d'un mail
    Bonjour a tous
    Que les choses soient claires je ne connais rien en VBA
    Je me suis créer un dossier de travail et de gestion de taches , sur EXCEL 2010 ,dans lequel je saisi toutes mes actions
    J'ai une date de début et une date de fin , l’écart est calculé dans la colonne I4 jusque I1000.
    Mon problème est simple ,quand le délai de traitement de tache est atteins je souhaite recevoir un mail d'alerte sur ma boite Gmail.
    Voila c'est certainement très simple pour vous mais très compliqué pour moi.
    Toute aide sera la bienvenu,
    Je vous remercie par avance et vous souhaite bonne soirée

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 33
    Par défaut
    J'ai finalement réussi à trouver la solution par moi même j'avais oublier de clore le sujet depuis.

  12. #12
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 33
    Par défaut
    Citation Envoyé par hervef33 Voir le message
    Bonjour a tous
    Que les choses soient claires je ne connais rien en VBA
    Je me suis créer un dossier de travail et de gestion de taches , sur EXCEL 2010 ,dans lequel je saisi toutes mes actions
    J'ai une date de début et une date de fin , l’écart est calculé dans la colonne I4 jusque I1000.
    Mon problème est simple ,quand le délai de traitement de tache est atteins je souhaite recevoir un mail d'alerte sur ma boite Gmail.
    Voila c'est certainement très simple pour vous mais très compliqué pour moi.
    Toute aide sera la bienvenu,
    Je vous remercie par avance et vous souhaite bonne soirée
    Créer un ticket à part et je prendrais le temps de te répondre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/05/2014, 23h15
  2. Macro pour envoi de mail auto selon conditions
    Par soadadrinker dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2013, 00h16
  3. Envoi de mail automatique depuis Excel + ajout condition temporelle
    Par l'acrobate dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2012, 11h46
  4. Envoie d’un mail automatique sous condition
    Par pythfred dans le forum Excel
    Réponses: 8
    Dernier message: 19/03/2012, 09h13
  5. [MySQL] Envoi de mail : souci avec les conditions
    Par mario94 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2011, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo