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