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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user