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

Réseau/Web Python Discussion :

Récuperer des attachments de mails sur gmail


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : décembre 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Récuperer des attachments de mails sur gmail
    Bonjour,

    Je cherche à récuperer des fichiers textes en attachment, sur une boite gmail (mais il est vraisemblable que je change d'hébergement email, donc je préfère ne pas utiliser l'API Google).
    J'ai parcouru différentes solutions sur le web, dont celle-ci qui me semble la plus aboutie (basée sur les librairies imaplib et email): https://gist.github.com/baali/2633554

    Il me semble avoir appliqué les mêmes règles. Mon code repère effectivement les mails avec attachment mais il n'arrive pas à me les lister. Je ne vois pas où j'ai fait une erreur ou ce que je ne prends pas en compte.
    J'ai pensé que ca pouvait etre dû au fait que ces mails avec attachment m'ont été forwardés, mais je me suis envoyé un attachment sans forward et c'est pareil.
    Dans tous les cas, mon code affiche bien "multiparties!" mais pas "attachment inside!"

    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
    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
     
    email_login='blablabla@gmail.com'
    email_pwd='blablaaussi'
     
    import sys
    import imaplib
    import getpass
    import email
    import datetime
     
    M = imaplib.IMAP4_SSL('imap.gmail.com')
     
    try:
        M.login(email_login, email_pwd)
    except imaplib.IMAP4.error:
        print ("Erreur: echec login! ")
        quit()
     
    print ("On est loggé!" )
     
    M.select(mailbox='INBOX')
    rv,items=M.search(None,"(ALL)")
    #rv,items=M.search(None,"(UNSEEN)")
    if rv == 'OK':
        print ("Items:")
     
        for msg in items[0].split():
            typ,data=M.fetch(msg,'(RFC822.HEADER)')
            message=email.message_from_bytes(data[0][1])
            varSubject=message['subject']
            varFrom=message['from']
            print ('Message: %s\nDe: %s\n'%(varSubject,varFrom))
     
     
            if message.get_content_maintype() != 'multipart':
                continue
            else:
                print ("multiparties!")
                for part in message.walk():
                    if part.get_content_maintype() == 'multipart':
                        continue
                    if part.get('Content-Disposition') is None:
                        print ("content dispo:%s" % part.get('Content-Disposition'))
                        continue
                    print ("attachments inside!")
     
                    print ("content dispo:%s" % part.get('Content-Disposition'))
     
                    nomfich=part.get_filename()
                    print ("Attachment: %s" % nomfich)
     
    else:
        print ('Erreur: pas d\'acces aux emails\n')      
    M.close()
    M.logout()
    Avez-vous une idée? merci pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : décembre 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Si ça peut aider, les mails avec attachement ont un Content-type "multipart/mixed" (par opposition aux autres ou c'est "multipart/alternative" voire rien du tout pour le texte brut.
    Mais en tous cas, pas de content-type "attachment" vu par mon code Python.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : décembre 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            typ,data=M.fetch(msg,'(RFC822)')
    au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            typ,data=M.fetch(msg,'(RFC822.HEADER)')

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

Discussions similaires

  1. Plus de reception de mail sur Gmail
    Par spawns dans le forum Langage
    Réponses: 11
    Dernier message: 07/05/2014, 11h35
  2. récuperer des infos sur la session en cours
    Par Adren dans le forum ASP
    Réponses: 8
    Dernier message: 30/07/2006, 22h08
  3. [VB6]Comment faire pour récuperer des donnée sur un mp3 ou wav ?
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/06/2006, 16h08
  4. Réponses: 6
    Dernier message: 27/04/2006, 10h41
  5. [serveur de mail] Partager des mails sur un réseau
    Par FFF dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 03/10/2005, 12h39

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