2015-02-04 2 views
1

Я могу подключиться к Gmail с помощью следующего кода:Как использовать imaplib для извлечения заголовков электронной почты и их печати в текстовый файл?

import imaplib 
mail = imaplib.IMAP4_SSL('imap.gmail.com') 
mail.login('[email protected]', 'mypassword') 
mail.list() 

мне теперь нужно выбрать «All Mail» со ​​счета.

mail.select("All Mail") 

Но я не считаю, что это работает.

Тогда я дохожу до очень сложной части для меня: я хочу иметь возможность загружать все заголовки для всех писем в файл .txt или .mbox. Я огляделся, и никакие вопросы/ответы не предоставили способ сохранить локальную копию заголовков. Есть идеи?

+1

См [Gmail Расширения IMAP] (https://developers.google.com/gmail/imap_extensions#special-use_extension_of_the_list_command) –

ответ

0

Если вы делаете mail.list(), он дает вам список всех папок IMAP/Gmail. Что-то вроде этого

('OK', ['(\\HasNoChildren) "/" "INBOX"', '(\\HasChildren \\Noselect) "/" "[Gmail]"', '(\\All \\HasNoChildren) "/" "[Gmail]/All Mail"', '(\\Drafts \\HasNoChildren) "/" "[Gmail]/Drafts"', '(\\HasNoChildren \\Important) "/" "[Gmail]/Important"', '(\\HasNoChildren \\Sent) "/" "[Gmail]/Sent Mail"', '(\\HasNoChildren \\Junk) "/" "[Gmail]/Spam"', '(\\Flagged \\HasNoChildren) "/" "[Gmail]/Starred"', '(\\HasNoChildren \\Trash) "/" "[Gmail]/Trash"']) 

Итак, чтобы выбрать все письма вы можете сделать mail.select('[Gmail]/All Mail').

import imaplib 
mail = imaplib.IMAP4_SSL('imap.gmail.com') 
mail.login('[email protected]', 'mypassword') 
mail.select('[Gmail]/All Mail') 

#Search for all UIDs first 
result, data = mail.uid('search', None, 'ALL') 
uids = data[0].split() 

#Loop through each uid to fetch headers 
for uid in uids: 
    result, data = mail.uid('fetch',uid, '(RFC822.HEADER)') 
    print data[0][1] #Headers will be stored here which can then be saved in a text file 
Смежные вопросы