aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xarchivemail.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/archivemail.py b/archivemail.py
index cee8a9f..3d42b86 100755
--- a/archivemail.py
+++ b/archivemail.py
@@ -1279,9 +1279,14 @@ def _archive_imap(mailbox_name, final_archive_name):
if archive:
archive.close()
archive.finalise()
- vprint("Deleting messages")
- imap_srv.store(string.join(message_list, ','),
- '+FLAGS.SILENT', '\\Deleted')
+ # do not delete more than a certain number of messages at a time, because the
+ # command length is limited. This avoids that servers terminate the connection with
+ # EOF or TCP RST.
+ vprint("Deleting %s messages" % len(message_list))
+ max_delete = 100
+ for i in range(0, len(message_list), max_delete):
+ imap_srv.store(string.join(message_list[i:i+max_delete], ','),
+ '+FLAGS.SILENT', '\\Deleted')
imap_srv.close()
imap_srv.logout()