fix: skip NoSelect folders, clean up debug logging

This commit is contained in:
2026-07-13 08:04:26 +08:00
parent 8c088ddff5
commit 5368812e45

View File

@@ -113,9 +113,8 @@ def fetch_unseen_emails(account: EmailAccount, skip_uids: set[bytes] | None = No
conn = _login_and_prepare(account, select_inbox=False) conn = _login_and_prepare(account, select_inbox=False)
if skip_uids is None: if skip_uids is None:
skip_uids = set() skip_uids = set()
logger.info("fetch_unseen_emails: %s, skip_uids大小=%d", account.username, len(skip_uids))
# 列出所有文件夹 # 列出所有文件夹,跳过 NoSelect 文件夹
_, folder_data = conn.list() _, folder_data = conn.list()
folders = [] folders = []
if folder_data: if folder_data:
@@ -123,6 +122,9 @@ def fetch_unseen_emails(account: EmailAccount, skip_uids: set[bytes] | None = No
if item is None: if item is None:
continue continue
line = item.decode("utf-8", errors="replace") line = item.decode("utf-8", errors="replace")
# 跳过 \NoSelect 文件夹(父文件夹,不能直接 SELECT
if "\\NoSelect" in line:
continue
m = re.search(r'"([^"]*)"\s*$', line) m = re.search(r'"([^"]*)"\s*$', line)
if m: if m:
folders.append(m.group(1)) folders.append(m.group(1))
@@ -148,11 +150,7 @@ def fetch_unseen_emails(account: EmailAccount, skip_uids: set[bytes] | None = No
skipped += len(uids) - len(new_uids) skipped += len(uids) - len(new_uids)
if not new_uids: if not new_uids:
continue continue
if skipped > 0 or len(uids) > 0: logger.info(" %s: %d 封未读 (%d 封跳过)", folder, len(new_uids), len(uids) - len(new_uids))
logger.info(" %s: %d 封未读 (%d 封跳过) skip_uids=%d",
folder, len(new_uids), len(uids) - len(new_uids), len(skip_uids))
if skip_uids and len(skip_uids) <= 5:
logger.info(" skip_uids 内容: %s", [u for u in skip_uids])
for uid in new_uids: for uid in new_uids:
try: try: