I inadvertently marked all the messages in my inbox as read with this python statement:
status, data = conn.uid('fetch', fetch_uids, '(RFC822)')
But I was able to walk through all the parts of the message with the following set of statments:
email_message = email.message_from_string(data[0][1])
for part in email_message.walk():
print '\n'
print 'Content-Type:',part.get_content_type()
print 'Main Content:',part.get_content_maintype()
print 'Sub Content:',part.get_content_subtype()
The output:
Content-Type: multipart/mixed
Main Content: multipart
Sub Content: mixed
Content-Type: multipart/alternative
Main Content: multipart
Sub Content: alternative
Content-Type: text/plain
Main Content: text
Sub Content: plain
Content-Type: text/html
Main Content: text
Sub Content: html
I found that if I used this statement instead:
status, data = conn.uid('fetch', fetch_uids, '(RFC822.HEADER BODY.PEEK[1])')
that I wouldn't mark all of my messages read. However, I also wouldn't get all the parts of the message:
Content-Type: multipart/mixed
Main Content: multipart
Sub Content: mixed
I tried to read the manual for imaplib here, but the word "peek" is not mentioned. My question is, how do I get all the parts of the message while not marking my messages as read? Thanks.