Получение сообщений UnRead с использованием poplib, Python

Я пытаюсь написать скрипт для проверки почтового сервиса, который использует pop3. Как видите, я использую модуль poplib. Однако я не вижу правильного способа получить непрочитанные сообщения. Я нашел метод, который извлекает все письма, поэтому этот вызов занимает так много времени:

messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]

Есть ли способ отфильтровать непрочитанные сообщения? Знаете ли вы какой-либо другой хороший модуль для работы с популярной почтовой службой? Вот код, который я использую:

import poplib
from email import parser
pop_conn = poplib.POP3_SSL('pop3.live.com', 995) #Connect to hotmail pop3 server
pop_conn.user('address')
pop_conn.pass_('password')
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
    print "{} : {}\n".format(message['subject'], message['From'])
pop_conn.quit()

1 ответ

Есть обходной путь.

Ты можешь использовать message_count, mailbox_size = pop_conn.stat() извлечь message_count и хранить как-нибудь. Позже Вы можете позвонить снова pop_conn.stat() и сравнить message_count с сохраненным (не забудьте обновить сохраненное значение, если оно изменяется). Разница заключается в "непрочитанных" письмах.

Другие вопросы по тегам