Bonjour,

Etant novice en programmation python, j'essaie de faire un petit programme qui récupère les derniers mails.
Quand je lance le programme, il commence bien à m'afficher les derniers mails reçu, mais au bout de 5 mails il me mets l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Traceback (most recent call last):
  File "I:\Python\testmail.py", line 32, in <module>
    if len(varSubject) > 35:
TypeError: object of type 'Header' has no len()
Je vous mets le programme :
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
import imaplib
imaplib._MAXLINE = 200000
import email
 
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('monadresse@gmail.com', 'motdepasse')
mail.list()
mail.select('inbox')
typ, data = mail.search(None, 'ALL')
ids = data[0]
id_list = ids.split()
 
#get the most recent email id
latest_email_id = int(id_list[-1])
 
#iterate through 15 messages in descending order starting with latest_email_id
#the '-1' dictates reverse looping order
for i in range(latest_email_id, latest_email_id - 15, -1):
    typ, data = mail.fetch(str(i), '(RFC822)')
 
    for response_part in data:
        if isinstance(response_part, tuple):
            msg = email.message_from_bytes(response_part[1])
            varSubject = msg['subject']
            varFrom = msg['from']
 
    #remove the brackets around the sender email address
    varFrom = varFrom.replace('<', '')
    varFrom = varFrom.replace('>', '')
 
    #add ellipsis (...) if subject length is greater than 35 characters
    if len(varSubject) > 35:
        varSubject = varSubject[0:32] + '...'
 
    print('[' + varFrom.split()[-1] + ']' + varSubject)
mail.close()
Si vous avez déjà eu le problème ou une idée, je vous remercie d'avance.
Jérôme