From 78478db625e81cd3abf29430e5d49dc264d114bb Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Wed, 15 Jul 2026 02:14:01 +0200 Subject: [PATCH] fix: IMAP sync uid_fetch and response parsing - Replace client.uid_fetch() with client.uid("fetch", ...) (aioimaplib API) - Fix response parsing for aioimaplib Response object structure --- app/plugins/builtins/mail/services.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/plugins/builtins/mail/services.py b/app/plugins/builtins/mail/services.py index 27cc6f1..55930e1 100644 --- a/app/plugins/builtins/mail/services.py +++ b/app/plugins/builtins/mail/services.py @@ -253,10 +253,11 @@ async def imap_sync_account( synced_count = 0 for uid in uids: uid_str = uid.decode() if isinstance(uid, bytes) else str(uid) - fetch_resp = await client.uid_fetch(uid_str, "(RFC822)") + fetch_resp = await client.uid('fetch', uid_str, '(RFC822)') raw_email = None - for line in fetch_resp: - if isinstance(line, tuple) and len(line) >= 2: + # aioimaplib Response: lines[0]='OK', lines[1]=[header_bytes, data_bytearray] + for line in fetch_resp.lines if hasattr(fetch_resp, 'lines') else fetch_resp: + if isinstance(line, (list, tuple)) and len(line) >= 2: raw_email = line[1] break if raw_email is None: