2015-02-19 3 views
0

Вот мой код:Функция извлечения IMAP ('1: 100', (X-GM-LABELS)) не извлекает входящие сообщения, а только электронные письма с надписью важны?

import imaplib 
from email.parser import HeaderParser 

conn = imaplib.IMAP4_SSL('imap.gmail.com') 
conn.login('[email protected]', 'password') 
conn.select() 
conn.search(None, 'ALL') 
data = conn.fetch('1', '(BODY[HEADER])') 
header_data = data[1][0][1] 
newdata = header_data.decode('utf-8') 
parser = HeaderParser() 
msg = parser.parsestr(newdata) 
print (msg.keys()) 
labels = conn.fetch('1:100', (X-GM-LABELS)) 
print (labels) 

Когда я распечатать этикетки, он распечатывает X-Gm-этикетки от каждого заголовка электронной почты (это папка, что электронная почта в). Однако он печатает только важные и отправляет метки x-gm. У меня около 60 электронных писем в моем почтовом ящике в диапазоне 1: 100. Итак, почему он не распечатывает папку «Входящие»? он просто печатает(). Вот распечатка, чтобы вы могли видеть ее должным образом.

'OK', [b'50 (X-GM-LABELS())', b'51 (X-GM-LABELS())', b'52 (X-GM-LABELS())', b'53 (X-GM-LABELS())', b'54 (X-GM-LABELS())', b'55 (X-GM-LABELS())', b'56 (X-GM-LABELS())', b'57 (X-GM-LABELS())', b'58 (X-GM-LABELS ("\\\\Important"))', b'59 (X-GM-LABELS())', b'60 (X-GM-LABELS())', b'61 (X-GM-LABELS())', b'62 (X-GM-LABELS())', b'63 (X-GM-LABELS())', b'64 (X-GM-LABELS())', b'65 (X-GM-LABELS ("\\\\Important"))', b'66 (X-GM-LABELS())', b'67 (X-GM-LABELS())', b'68 (X-GM-LABELS())', b'69 (X-GM-LABELS())', b'70 (X-GM-LABELS())', b'71 (X-GM-LABELS())', b'72 (X-GM-LABELS())', b'73 (X-GM-LABELS())', b'74 (X-GM-LABELS ("\\\\Important"))', b'75 (X-GM-LABELS ("\\\\Important"))', b'76 (X-GM-LABELS())', b'77 (X-GM-LABELS ("\\\\Important"))', b'78 (X-GM-LABELS())', b'79 (X-GM-LABELS ("\\\\Important"))', b'80 (X-GM-LABELS ("\\\\Important"))', b'81 (X-GM-LABELS ("\\\\Important"))', b'82 (X-GM-LABELS())', b'83 (X-GM-LABELS())', b'84 (X-GM-LABELS())', b'85 (X-GM-LABELS ("\\\\Important"))', b'86 (X-GM-LABELS())', b'87 (X-GM-LABELS())', b'88 (X-GM-LABELS())', b'89 (X-GM-LABELS())', b'90 (X-GM-LABELS())', b'91 (X-GM-LABELS())', b'92 (X-GM-LABELS())', b'93 (X-GM-LABELS())', b'94 (X-GM-LABELS())', b'95 (X-GM-LABELS())', b'96 (X-GM-LABELS())', b'97 (X-GM-LABELS ("\\\\Important"))', b'98 (X-GM-LABELS())', b'99 (X-GM-LABELS())', b'100 (X-GM-LABELS ("\\\\Important"))']) 

Так b'50 должно быть:

b'50 (X-GM-LABELS (\\\\Inbox)) 

, но вместо этого его просто:

b'50 (X-GM-LABELS())' 

ответ

1

В ходе тестирования выбранный почтовый ящик всегда исключается из X-GM-LABELS результатов. Когда вы вызвали conn.select(), он implicitly selected 'INBOX', поэтому исключая «Входящие» из списка ярлыков.

Если вы выбрали другой почтовый ящик, то вы увидите '\\\\ Входящие' в результатах:

conn.select("[Gmail]/All Mail") 
conn.fetch('1:100', '(X-GM-LABELS)') 

Результаты в:

('OK', ['21 (X-GM-LABELS ("\\\\Inbox"))']) 

 Смежные вопросы

  • Нет связанных вопросов^_^