diff --git a/email_forwarder/email_forwarder.py b/email_forwarder/email_forwarder.py index 59bdfc5..9191fdd 100644 --- a/email_forwarder/email_forwarder.py +++ b/email_forwarder/email_forwarder.py @@ -104,13 +104,9 @@ class DestImap(ImapClient): def check_duplicate(self, msg_id: str): """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 Exception as e: - logging.error(f"Error checking duplicate for {msg_id}: {e}") - return False + 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 def _create_folder(self, folder: str): """Private: Create a folder.""" @@ -179,15 +175,12 @@ class EmailForwarder: total_forwarded = 0 for folder in folders: - try: - uids = self.source.get_new_emails( - folder, self.last_run.strftime("%d-%b-%Y") - ) - logging.info(f"Found {len(uids)} emails in {folder}") - forwarded = self.sync_folder(folder, uids) - total_forwarded += forwarded - except Exception as e: - logging.error(f"Error syncing {folder}: {e}") + uids = self.source.get_new_emails( + folder, self.last_run.strftime("%d-%b-%Y") + ) + logging.info(f"Found {len(uids)} emails in {folder}") + forwarded = self.sync_folder(folder, uids) + total_forwarded += forwarded self.source._disconnect() self.dest._disconnect() @@ -198,34 +191,27 @@ class EmailForwarder: forwarded = 0 for uid in uids: uid_str = uid.decode() - try: - raw_msg = self.source._fetch(uid_str) + raw_msg = self.source._fetch(uid_str) - msg = message_from_bytes(raw_msg) - msg_id = msg.get("Message-ID") - if not msg_id: - 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 + msg = message_from_bytes(raw_msg) + msg_id = msg.get("Message-ID") + if not msg_id: + continue + if msg_id in self.processed_ids: + continue + self.dest.ensure_folder_exists(folder) + if self.dest.check_duplicate(msg_id): + continue - if not self.dry_run: - self.dest.append_email(folder, raw_msg) - self.processed_ids.add(msg_id) - with open(self.processed_file, "a") as f: - f.write(msg_id + "\n") - forwarded += 1 - logging.info(f"Forwarded {msg_id} from {folder}") - else: - logging.info(f"Dry-run: Would forward {msg_id} from {folder}") - except Exception as e: - logging.error(f"Error processing UID {uid_str}: {e}") + if not self.dry_run: + self.dest.append_email(folder, raw_msg) + self.processed_ids.add(msg_id) + with open(self.processed_file, "a") as f: + f.write(msg_id + "\n") + forwarded += 1 + logging.info(f"Forwarded {msg_id} from {folder}") + else: + logging.info(f"Dry-run: Would forward {msg_id} from {folder}") return forwarded def run(self):