From 69ec294a5669a31f4585717f21b232a797b690a5 Mon Sep 17 00:00:00 2001 From: Jeena Date: Sun, 4 Jan 2026 20:03:49 +0900 Subject: [PATCH] Fix duplicate detection by ensuring folder selection Call ensure_folder_exists before check_duplicate to select the dest folder, allowing IMAP SEARCH to work in SELECTED state. Changes: - Move dest.ensure_folder_exists(folder) before check_duplicate in process_email - Add logging to check_duplicate for debugging --- email_forwarder/email_forwarder.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/email_forwarder/email_forwarder.py b/email_forwarder/email_forwarder.py index d7d0625..59bdfc5 100644 --- a/email_forwarder/email_forwarder.py +++ b/email_forwarder/email_forwarder.py @@ -106,8 +106,10 @@ class DestImap(ImapClient): """Check if Message-ID exists in current folder.""" try: results = self._search(f'HEADER Message-ID "{msg_id}"') + logging.debug(f"Check duplicate for {msg_id}: found {len(results)} matches") return len(results) > 0 - except: + except Exception as e: + logging.error(f"Error checking duplicate for {msg_id}: {e}") return False def _create_folder(self, folder: str): @@ -205,6 +207,11 @@ class EmailForwarder: continue if msg_id in self.processed_ids: continue + self.dest.ensure_folder_exists(folder) + if self.dest.check_duplicate(msg_id): + continue + if msg_id in self.processed_ids: + continue if self.dest.check_duplicate(msg_id): continue