From 25343c9b7e683d096bac9235ac1b5194f84a8500 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 4 Feb 2026 22:57:30 -0500 Subject: [PATCH] IMAP idle and parser improvements --- src/imap/idle.py | 8 +++++++- src/imap/parser.py | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/imap/idle.py b/src/imap/idle.py index d2323ab..ed6a4ab 100644 --- a/src/imap/idle.py +++ b/src/imap/idle.py @@ -104,6 +104,12 @@ class IdleHandler: timeout=300 # 5 minute timeout ) + # Exit IDLE before processing (can't SEARCH while in IDLE) + try: + self._client.idle_done() + except Exception: + pass + # Process responses for response in responses: if isinstance(response, tuple) and len(response) >= 2: @@ -116,7 +122,7 @@ class IdleHandler: ) last_count = count finally: - # Always exit IDLE mode + # Ensure we exit IDLE mode (may already be done above) try: self._client.idle_done() except Exception: diff --git a/src/imap/parser.py b/src/imap/parser.py index 6da7635..b41b023 100644 --- a/src/imap/parser.py +++ b/src/imap/parser.py @@ -143,7 +143,7 @@ def parse_flags(flags: Any) -> MessageFlags: ) -def extract_text_body(msg: email.message.Message, max_length: int = 5000) -> tuple[str, str]: +def extract_text_body(msg: email.message.Message, max_length: int = 100000) -> tuple[str, str]: """Extract text and HTML bodies from an email message.""" text_body = "" html_body = ""