Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] utiliser smtplib

débutant moyen...

Sujet résolu
    10 décembre 2008 à 15:00:46

    Bonjour !
    J'aimerai utiliser la bibliothèque smtplib, mais quand j'essaye les exemples des seuls sites qui en parlent, il y a toujours une erreur... C'est pourquoi j'ai quelques questions :
    smtplib.SMTP()
    Y a-t-il un paramètre à passer pour SMTP ?
    Faut-il se logger ?
    Bref je ne comprends plus rien !
    Pourriez-vous m'aider s'il vous plaît ?
    Andante
    Merci d'avance !
    PS :
    import smtplib
    from email.MIMEText import MIMEText
    def envoyer(data="none"):
        print "Message en préparation..."
        de = "Expediteur <mon@mailr>"
        pour = "Pour <mon@mail>"
        mail = MIMEText("Test")
        mail['From'] = de
        mail['Subject'] = "Test : Envoyer"
        mail['To'] = pour
        smtp = smtplib.SMTP()
        smtp.connect('smtp.mail.yahoo.fr', 25)
        smtp.sendmail(de, [pour], mail.as_string())
        smtp.close()
        print "Message envoyé !"
    
    envoyer()
    

    Il se bloque toujours au niveau de smtplib.SMTP jusqu'à sendmail...
    • Partager sur Facebook
    • Partager sur Twitter
      10 décembre 2008 à 15:39:09

      En fait, d'abord ça m'affiche : MEssage en préparation...
      Jusque là, tout va bien, mais après il n'y a plus rien, alors je suis obligé de faire Ctrl+C !
      Message en préparation...
      Traceback (most recent call last):
        File "main3.py", line 13, in <module>
          smtp.connect('smtp.mail.yahoo.fr', 25)
        File "/usr/lib/python2.5/smtplib.py", line 301, in connect
          self.sock.connect(sa)
        File "<string>", line 1, in connect
      KeyboardInterrupt

      • Partager sur Facebook
      • Partager sur Twitter
        10 décembre 2008 à 17:37:37

        Bin si tu l'interromps, c'est normal qu'il s'arrête, non ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          10 décembre 2008 à 18:01:12

          Bonsoir,

          #Envoi par mail du contenu d'un fichier
          
          import smtplib
          from email.MIMEText import MIMEText
          
          IPduServeur    = 'localhost'
          monFichierMail = open     ('monMailAEnvoyer.txt', 'rb') # lecture du fichier
          leMessage      = MIMEText ( monFichierMail.read() ) # création d'un message text/plain 
          monFichierMail.close()
          
          leMessage['Subject'] = "Confirmation de l'exigence A441"
          leMessage['From']    = "expediteur@phales.com"
          leMessage['To']      = "destinataire@ecn.com"
          
          leServeurSMTP = smtplib.SMTP(IPduServeur) # envoi du messge 
          leServeurSMTP.connect()
          leServeurSMTP.sendmail('expediteur@phales.com',
                                 'destinataire@ecn.com',
                                  leMessage.as_string())
          leServeurSMTP.quit()
          


          source : fr.wikibooks.org/wiki/Exemples_de_scripts_Python
          • Partager sur Facebook
          • Partager sur Twitter
            10 décembre 2008 à 18:42:30

            Et le respect de la PEP8 là dedans ?
            • Partager sur Facebook
            • Partager sur Twitter
              12 décembre 2008 à 16:54:16

              A fred1599 : merci pour le code, j'ai remplacé les adresses mail, j'ai créé le fichier texte, mais il m'affiche :
              Traceback (most recent call last):
                File "wikessai.py", line 15, in <module>
                  leServeurSMTP = smtplib.SMTP(IPduServeur) # envoi du messge 
                File "/usr/lib/python2.5/smtplib.py", line 244, in __init__
                  (code, msg) = self.connect(host, port)
                File "/usr/lib/python2.5/smtplib.py", line 310, in connect
                  raise socket.error, msg
              socket.error: (111, 'Connection refused')
              ...??

              Citation : wgmpgp

              Et le respect de la PEP8 là dedans ?


              Qu'est-ce que c'est ? :honte::ange:
              Merci pour vos réponses !
              Andante
              • Partager sur Facebook
              • Partager sur Twitter
                12 décembre 2008 à 17:49:17

                Un truc bizarre et arbitraire qui t'impose une manière de coder qui n'est pas la tienne.
                C'est un texte qui propose des conventions de style pour les codeurs en python, par exemple le niveau d'indentation, les conventions de nommage... Tu devrais la lire, le fait d'avoir les codes python écrits de la même façon aide à la lecture. (même si moi personnellement je ne respecte pas tous les points...)
                • Partager sur Facebook
                • Partager sur Twitter
                  24 décembre 2008 à 11:18:27

                  Ok !
                  Bon, j'ai continué de tester divers codes, sans succès. C'est pourquoi je vous demande : utilisez-vous (ou avez-vous déjà utilisé) smtplib ? Si oui, pourriez-vous s'il vous plaît me donner votre exemple à vous ?! Sinon, utilisiez-vous autre chose ?
                  :euh: Un grand merci d'avance,
                  Andante
                  PS : joyeuses fêtes à tous !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 décembre 2008 à 1:10:53

                    Le problème, c'est que la connexion est tout simplement refusée, le code a l'air correct sinon ;)
                    La PEP8 demande d'indenter le code avec 4 espaces au lieu d'utiliser des tabulations.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 février 2009 à 12:58:12

                      Le problème, c'est que la connexion est refusée avec tous les serveurs POP que j'essaye..... :(
                      Je ne vois vraiment pas où est le problème, mais bon, si Python est de mauvaise humeur aujourd'hui, n'allons pas le contrarier !! :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 février 2009 à 16:21:49

                        J'ai peut-être loupé un truc mais tu t'identifies au serveur mail à quel endroit ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 mars 2009 à 13:07:17

                          (attention, je vais peut-être répondre à côté, mais c'est pas grave :p )
                          Je me connecte au port 110...
                          :euh: Quoi ? Comment ça c'était pas la question ? :D
                          Bon, je n'ai sûrement pas compris la question, mais...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 mars 2009 à 17:16:31

                            tu as essayé avec un autre serveur SMTP?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 mai 2009 à 16:38:17

                              Bon même si le sujet est ancien je vais répondre pour éviter que d'autres ne cherchent pour rien, le code est bon, le problème ne vient pas de là. En France comme dans beaucoup de pays dans le monde les ISP ( fai ) bloquent le port 25 ( SMTP ) pour éviter d'avoir des pc zombies, c'est à dire des ordinateurs qui envoient du spam. Voilà pourquoi il est souvent impossible d'envoyer des mail de chez nous sans passer par un relay ( ex : smtp.orange.fr )
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 août 2009 à 14:06:16

                                Ah bon ? C'est dommage.. :(
                                Enfin, merci quand même d'avoir déterré ce sujet, comme ça ma question ne restera pas sans réponse ^^ ni celles d'autres qui auraient le même problème... ! :)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  21 juillet 2010 à 21:30:37

                                  bonsoir
                                  je vais peut etre dire une connerie mais de chez moi je ne peux pas attaquer directement le smtp de laposte.net
                                  je dois passer par le smtp de mon provider FAI
                                  Pour que mes mails partent ils doivent partir par smtp.free.fr

                                  mais je reconnais que pour m'aider j'ai un message d'erreur du genre je sais plus quoi acces refusé

                                  cordialement
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 février 2012 à 17:38:59

                                    Bon même si le sujet est ancien je vais répondre avec une solution

                                    ton serveur demande login et password
                                    voici la solution avec la modification des codes

                                    import smtplib
                                    from email.MIMEText import MIMEText
                                    def envoyer(data="none"):
                                    print "Message en préparation...."
                                    de = "Lamis <xxxx@gmail.com>"
                                    pour = "Matina <xxxx@hotmail.com>"
                                    mail = MIMEText("Test")
                                    mail['From'] = de
                                    mail['Subject'] = "Test : Envoyer"
                                    mail['To'] = pour
                                    username = 'xxxxx@gmail.com' # votre login ici
                                    password = 'votre password' # votre password ici
                                    smtp = smtplib.SMTP('smtp.gmail.com:587')
                                    smtp.starttls()
                                    smtp.login(username,password)
                                    smtp.sendmail(de, [pour], mail.as_string())
                                    smtp.close()
                                    print "Message envoyé !"

                                    envoyer()
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      16 mai 2013 à 17:55:57

                                      Bonjour,

                                      Je débute la programmation avec Python et j'ai lu avec attention les différents cours et rubriques du forum sur le sujet.

                                      J'ai cependant un problème et pour cela je sollicite votre aide s'il vous plait. 

                                      Je voudrais essayer de faire un petit programme qui envoie simplement un mail d'une adresse vers une autre.

                                      Je précise que j'utilise Python 3.2. Les adresses mails sont des adresses respectivement en @hotmail.fr (pour l'émetteur) et @live.fr (pour le destinataire).

                                      J'écris dans la console le code suivant:

                                      #import

                                      import smtplib

                                      #création de la fonction

                                      def envoi_email(de, a, message):

                                        serveur = smtplib.SMTP("62.14.3.192", 8085)

                                        serveur.sendmail(de, a, message)

                                      Ensuite, toujours dans la console, j'appelle ma fonction

                                      envoi_email("...@hotmail.fr", "...@live.fr", "message_que_je_veux_envoyer")

                                      Systématiquement, j'obtiens l'erreur 10060 qui me dit qu'il s'est produit une erreur durant l'essai de connexion et que la partie connectée n'a pas répondu correctement après un certain temps.

                                      J'ai essayé le code de Matlamis mais Python me dit qu'il ne trouve pas le moduleMIMEText ;(

                                      Pourriez-vous s'il vous plait me dire si mon code est juste ou non, si l'erreur vient de moi (TRES SANS DOUTE) ou pas ? Pourriez-vous me donner le code qui fonctionnerait ? J'ai cogité des heures en faisant des essais avec les scripts que je trouvais sur internet et que j'adaptais, mais rien n'y fait...

                                      Normalement, il faut un mot de passe pour chacune des deux adresses est-ce une variable à prendre en compte ?

                                      En vous remerciant de votre aide,

                                      Bien cordialement,

                                      boumboumboum

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        21 décembre 2013 à 20:54:57

                                        Salut,

                                        Pour pouvoir utiliser le module MIMEText, tu peux essayer d'installer/réinstaller le package "email":

                                        pip install email

                                        Si cela ne marche pas, fait attention à ne pas avoir un fichier email.py dans le même répertoire.

                                        http://www.gossamer-threads.com/lists/python/python/830995

                                        :) 

                                        -
                                        Edité par bagluck 22 décembre 2013 à 4:23:29

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          22 décembre 2017 à 23:51:33

                                          Je réponds un peu (très) tard, mais avec python 3,  c'est non plus laa bibliothèque MIMEsText mais email.mime.text
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            17 octobre 2018 à 17:52:03

                                            J utilise python et le serveur de messagerie
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            [Python] utiliser smtplib

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown