Я использую следующий код, чтобы загрузить все мои письма из gmail, но, к сожалению, общее количество возвращенных сообщений не совпадает с общим количеством электронных писем в учетной записи. В частности, я могу получить первые 43 сообщения, но я считаю, что еще 20 в папке «Входящие» пропущены. Возможно, это какой-то предел числа, которое можно оттянуть назад (?). Заранее благодарим за любую помощь!Получение писем от gmail через python
import imaplib, email, base64
def fetch_messages(username, password):
messages = []
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login(username, password)
conn.select()
typ, data = conn.uid('search', None, 'ALL')
for num in data[0].split():
typ, msg_data = conn.uid('fetch', num, '(RFC822)')
for response_part in msg_data:
if isinstance(response_part, tuple):
messages.append(email.message_from_string(response_part[1]))
typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
return messages
Вы пробовали conn.search (None, 'ALL'), чтобы получить все сообщения? – theodox
да, я обновил фрагмент кода, чтобы было ясно, что для «status» установлено значение «ALL». – vgoklani
Вы можете попробовать использовать conn.search() вместо conn.uid(). Вы получите индексы, а не uids, но вы можете получить uid, когда вы получите сообщение. – theodox