Refactor: Optimize IMAP deletions, fix server timeouts, and modernize codebase #6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Title: Refactor: Optimize IMAP deletions, fix server timeouts, and modernize codebase
Description:
This PR refactors the legacy
AutoUnsubscriberscript to address critical performance bottlenecks, server compatibility issues (specifically with Zoho/custom domains), and reliability concerns.Key Changes:
Performance Optimization (Batching):
Implemented batch fetching (50 emails/chunk) in
getEmails()to preventsocket error: EOFon large inboxes.Implemented batch deletion in
deleteEmails().Moved
EXPUNGEcommand outside the deletion loop to execute only once per session, significantly reducing server operations.Server Compatibility:
Fixed
search()command syntax (split arguments into a list) to comply with strict IMAP implementations (e.g., Zoho).Added Manual IMAP Server Entry for custom domains that are not auto-detected.
Reliability & Safety:
Added
tqdmprogress bars for real-time feedback during scanning and deletion.Added a strict "Type DELETE to confirm" safety check before removing any data.
Implemented proper
logginginstead of relying solely onprintstatements.Added
try/exceptblocks inside batch loops to prevent a single corrupt email from crashing the entire process.Testing:
\Deletedand expunged.Dependencies:
tqdmpyzmailtopyzmail36(viauvinstructions) for Python 3 compatibility.