fix: IMAP sync response parsing - extract bytearray from response lines

- aioimaplib returns bytes/bytearray lines, not tuples
- Find bytearray line containing the raw email data
This commit is contained in:
Agent Zero
2026-07-15 02:20:02 +02:00
parent 78478db625
commit be8a95995b
+4 -4
View File
@@ -255,10 +255,10 @@ async def imap_sync_account(
uid_str = uid.decode() if isinstance(uid, bytes) else str(uid) 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 raw_email = None
# aioimaplib Response: lines[0]='OK', lines[1]=[header_bytes, data_bytearray] # aioimaplib Response lines: [header_bytes, data_bytearray, closing_bytes, completion_bytes]
for line in fetch_resp.lines if hasattr(fetch_resp, 'lines') else fetch_resp: for line in (fetch_resp.lines if hasattr(fetch_resp, 'lines') else fetch_resp):
if isinstance(line, (list, tuple)) and len(line) >= 2: if isinstance(line, bytearray):
raw_email = line[1] raw_email = bytes(line)
break break
if raw_email is None: if raw_email is None:
continue continue