我无意中将收件箱中的所有消息都标记为已阅读此 python 语句:
status, data = conn.uid('fetch', fetch_uids, '(RFC822)')
但是我能够使用以下一组语句浏览消息的所有部分:
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()
输出:
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
我发现如果我改用这个语句:
status, data = conn.uid('fetch', fetch_uids, '(RFC822.HEADER BODY.PEEK[1])')
我不会将我所有的消息都标记为已读。但是,我也不会得到消息的所有部分:
Content-Type: multipart/mixed
Main Content: multipart
Sub Content: mixed
我试图在这里阅读 imaplib 的手册,但没有提到“peek”这个词。我的问题是,如何在不将消息标记为已读的情况下获取消息的所有部分?谢谢。