perf(transfer): break on old mail instead of continue - newest-first scan

This commit is contained in:
yumoqing 2026-07-17 15:00:18 +08:00
parent 23b0efe452
commit dd72fb77d9

View File

@ -176,7 +176,7 @@ class TransferGateway(Gateway):
try: try:
mail_date = parsedate_to_datetime(mail_date_str) mail_date = parsedate_to_datetime(mail_date_str)
if mail_date < cutoff: if mail_date < cutoff:
continue break # 从新到旧扫描,遇旧邮件停止
except: except:
continue continue
else: else:
@ -265,19 +265,16 @@ class TransferGateway(Gateway):
idx = str(i) idx = str(i)
mail_date_str = getattr(mail, 'date', None) mail_date_str = getattr(mail, 'date', None)
skip_date = False
if mail_date_str: if mail_date_str:
try: try:
mail_date = parsedate_to_datetime(mail_date_str) mail_date = parsedate_to_datetime(mail_date_str)
if mail_date < cutoff: if mail_date < cutoff:
skip_date = True debug('mail[' + idx + '] date=' + str(mail_date_str) + ' older than 2 days, stop scanning')
break # 从新到旧扫描,遇到旧邮件后面都更旧
except Exception as de: except Exception as de:
debug('mail[' + idx + '] date parse error: ' + str(mail_date_str) + ' -> ' + str(de)) debug('mail[' + idx + '] date parse error: ' + str(mail_date_str) + ' -> ' + str(de))
else: else:
debug('mail[' + idx + '] no date header, skipping date filter') debug('mail[' + idx + '] no date header, skip')
skip_date = True # 没有日期头的邮件跳过
if skip_date:
debug('mail[' + idx + '] date=' + str(mail_date_str) + ' older than 2 days or no date, skip')
continue continue
from_addr = getattr(mail, 'mailfrom', '?') from_addr = getattr(mail, 'mailfrom', '?')