Comprendre l'erreur TypeError: object of type 'Header' has no len()
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:
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:
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