fix: skip NoSelect folders, clean up debug logging
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user