Как разорвать цикл, только если тема электронного письма не содержит сегодняшнюю или вчерашнюю датуPython

Программы на Python
Anonymous
Как разорвать цикл, только если тема электронного письма не содержит сегодняшнюю или вчерашнюю дату

Сообщение Anonymous »

Я читаю этот документ о подключении к моему серверу IMAP и чтении электронных писем, но у меня есть некоторые проблемы.
В настоящее время у меня около 10 тысяч электронных писем, и их количество растет (я удаляю старые электронные письма еженедельно, но их по-прежнему много), и в этой части кода он извлекает все электронные письма:
res, msg = imap.fetch(str(i), "(RFC822)")

Мои электронные письма имеют такой статический формат темы:
StaticText1 - SUBJECT - SentDateYYYY-MM-DD Hour:Minute
StaticText2 - SUBJECT - SentDateYYYY-MM-DD Hour:Minute

Для простоты представим себе такой список:
dates = ['2024-07-16', '2024-07-16', '2024-07-16', '2024-07-16', '2024-07-16', '2024-07-16', '2024-07-16', '2024-07-15', '2024-07-15', '2024-07-15', '2024-07-15', '2024-07-15', '2024-07-15', '2024-07-15', '2024-07-15', '2024-07-14', '2024-07-14', '2024-07-14', '2024-07-14', '2024-07-14', '2024-07-14', '2024-07-13', '2024-07-13', '2024-07-13', '2024-07-13', '2024-07-13', '2024-07-13', '2024-07-13']

Итак, допустим, чтение каждого письма занимает не менее 0,1 секунды, а для 10 тысяч писем это будет очень много времени.
Я читаю электронные письма в мой код от самого последнего до самого старого.
Я собираюсь достичь этого:
if datetime.datetime.now().strftime('%Y-%m-%d') in subject or (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') in subject:
# then read email
print(email)
else:
# as soon as it reaches an email which has 2024-07-14, it breaks the loop and shouldn't try anything further
break

Главный вопрос: возможно ли это вообще?
Обновление1
Чтобы уточнить, я это знаю, но оно читает каждое письмо и, если оно не содержит даты, прерывается и переходит к другому письму (которое не является исключением):
for subject in emails:
if today in subject or yesterday in subject:
print(subject)


Подробнее здесь: https://stackoverflow.com/questions/787 ... -yesterday

Вернуться в «Python»