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 :

smtplib et fonction


Sujet :

Python

  1. #1
    Membre éclairé
    Homme Profil pro
    Chef de projet/développeur Odoo
    Inscrit en
    Février 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet/développeur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 47
    Par défaut smtplib et fonction
    Bonjour
    Je tente d'envoyer un mail avec smtplib :

    Voici le code qui marche :

    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
     
    temps = time.strftime('%d/%m/%y %H:%M:%S',time.localtime()) 
    sender = '****@****'
    receivers = ['****@****']
    message = """From: Machine twist <****@****>
    To: **** ****<l.****@******>
    Subject: ARRET MACHINE TWIST
    Arret de machine twist a cette heure = %s , pour cette raison ci.
    """ % temps
     
    try:
        smtpObj = smtplib.SMTP('ns0.ovh.net', 587)
        smtpObj.login('****@****','****')
        smtpObj.sendmail(sender, receivers, message)         
        print "Successfully sent email"
    except SMTPException:
        print "Error: unable to send email"

    J'essaie de l'intégrer dans une fonction pour pouvoir l'appeler tranquillement tout le long de mon programme... Normal quoi !

    Mais ici : j'ai le message 'Successfully sent email' Donc c'est cool...
    Mais je ne reçois jamais le mail.

    Voici mon 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
     
    ####oo.py
    #!/usr/bin/python
    import smtplib
    import time
     
    def envoie():
     
        temps = time.strftime('%d/%m/%y %H:%M:%S',time.localtime()) 
        sender = 'contact-erp@ipack.fr'
        receivers = ['l.olivier@ipack.fr']
        message = """From: Machine twist <alert-machine_twist@ipack.fr>
        To: Olivier Lilian <l.olivier@ipack.fr>
        Subject: ARRET MACHINE TWIST
        Arret de machine twist a cette heure = %s , pour cette raison ci.
        """ % temps
     
        try:
            smtpObj = smtplib.SMTP('ns0.ovh.net', 587)
            smtpObj.login('****-erp@****.fr','****)')
            smtpObj.sendmail(sender, receivers, message)         
            print "Successfully sent email"
        except SMTPException:
            print "Error: unable to send email"
     
    def test():
            envoie();
            print 'test executer'
    Et j'execute la commande dans le prompt python
    >>> import aa
    >>> aa.envoie()
    Successfully sent email

    ... mais je n'ai rien.

  2. #2
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Bonjour,

    Je n'ai pas d'accès à un pc equipé de Python actuellement, aussi je n'ai pas pu tester ton code. Cependant, le shebang doit normalement toujours se situer à la toute première ligne de ton code ("#!/usr/bin/python"). De plus, je te recommande de preciser l'ecodage pour eviter tout soucis, aussi en ligne 2, ajoute "# -*-coding:utf-8 -*"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/usr/bin/python
    # -*-coding:utf-8 -*
    De plus, pour tester ton code, je te recommande d'écrire à la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if __name__ == "__main__":
        #appel de tes fonctions
    Cela est très utile. Si tu lance directement ton code, __name__ vaut "__main__". Par contre si tu fait un import de ton module, __name__ sera different de "__main__". Tu peut ainsi placer dans cette condition du code de test simple.

    Essaie de corriger le shebang et d'ajouter la ligne d'encodage et ressaie pour voir.

  3. #3
    Membre éclairé
    Homme Profil pro
    Chef de projet/développeur Odoo
    Inscrit en
    Février 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet/développeur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 47
    Par défaut
    Merci pour ta réponse rapide deusyss

    Voici le résultat :

    Nom de mon fichier cc.py

    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
    #!/usr/bin/python
    # -*-coding:utf-8 -*
     
    import smtplib
    import time
     
    def envoie():
        temps = time.strftime('%d/%m/%y %H:%M:%S',time.localtime()) 
        sender = '*******@***.**'
        receivers = ['*****@***.**']
        message = """From: Machine twist <****@****>
        To: Olivier Lilian <*******@******>
        Subject: ARRET MACHINE TWIST
        Arret de machine twist a cette heure = %s , pour cette raison ci.
        """ % temps
     
        try:
            smtpObj = smtplib.SMTP('ns0.ovh.net', 587)
            smtpObj.login(*****','*****')
            smtpObj.sendmail(sender, receivers, message)         
            print "Successfully sent email"
        except SMTPException:
            print "Error: unable to send email"
     
    if __name__ == '__main__':
        envoie()
        print 'test executer'

    Pour executer :

    openerp@openerp:~/Bureau$ python cc.py
    Successfully sent email
    test executer

    Mais malheuresement, pas de reception de mail
    -> le main a l'air de bien s'executer,
    il renvoie vers la fonction envoie (puisque j'ai mon 'successfull sent')
    mais l'envoie de mail en lui même est allergique au fonction ?!

    Merci

  4. #4
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 567
    Par défaut
    Salut

    As-tu ré-essayer sans fonction ?
    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Membre éclairé
    Homme Profil pro
    Chef de projet/développeur Odoo
    Inscrit en
    Février 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet/développeur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 47
    Par défaut
    Oui j'ai reesayer sans fonction.
    Et ça fonctionne.

    J'ai trouvé un code ici :
    http://python.jpvweb.com/mesrecettes...e_code_complet

    Il fonctionne. Je suis en train de regarder pour savoir
    pourquoi celui ci fonctionne avec des classe et fonction alors que le mien non.

    Il faut dire qu'il est beaucoup plus complet !
    Une erreur doit etre généré lors de l'envoie du mail, mais je ne la vois pas.

    Avec cette commande : smtp.set_debuglevel(1)
    qui deviendrais chez moi smtpOBJ.set_debuglevel(1)
    Peut etre verrais-je quelquechose.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Par défaut
    2 choses :

    1. Avez-vous essayé de fermer la session SMTP en utilisant la méthode SMTP.quit() ? C'est toujours bon de fermer les flux pour voir si les modifs sont prises en compte .

    2. Vous n'avez pas caché vos login et mot de passe SMTP dans le 2e cadre de code de votre premier message. Je vous conseille de changer rapidement de mot de passe...

  7. #7
    Membre éclairé
    Homme Profil pro
    Chef de projet/développeur Odoo
    Inscrit en
    Février 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet/développeur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 47
    Par défaut
    En effet .. boulette pour le mot de passe !
    Merci !

    Je vais essayer mon script en fermant le flux. je vous tiens au courant.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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