如何在邮件主题不含今日/昨日日期时中断Python邮件读取循环
IMAP邮件读取逻辑可行性疑问
我正在实现IMAP服务器连接与邮件读取,当前邮箱有近10000封邮件(每周清理旧邮件但数量仍持续增加)。目前使用res, msg = imap.fetch(str(i), "(RFC822)")读取所有邮件,但单封邮件读取至少需要0.1秒,处理全部邮件耗时过长。
我的邮件主题有固定格式:
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']
我的代码是从最新到最旧顺序读取邮件,希望实现以下逻辑:
import datetime today = datetime.datetime.now().strftime('%Y-%m-%d') yesterday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') # 循环遍历邮件(从最新到最旧) for ...: # 获取当前邮件主题subject if today in subject or yesterday in subject: # 读取并处理邮件内容 print(email) else: # 一旦读到含非今日/昨日日期的邮件,立即中断循环,停止处理后续邮件 break
核心疑问:上述逻辑是否可行?
补充说明:我知道以下写法,但它会逐个读取所有邮件,无法满足效率需求:
for subject in emails: if today in subject or yesterday in subject: print(subject)
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

