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)
|
||||
fetch_resp = await client.uid('fetch', uid_str, '(RFC822)')
|
||||
raw_email = None
|
||||
# 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]
|
||||
# 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):
|
||||
if isinstance(line, bytearray):
|
||||
raw_email = bytes(line)
|
||||
break
|
||||
if raw_email is None:
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user