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 :
Je vous mets le programme :
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()
Si vous avez déjà eu le problème ou une idée, je vous remercie d'avance.
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()
Jérôme
Partager