Benjamin Renard commited on 2013-12-12 11:47:36
Showing 1 changed files, with 36 additions and 1 deletions.
... | ... |
@@ -98,6 +98,13 @@ parser.add_option('-l', |
98 | 98 |
help="List mailboxes", |
99 | 99 |
default=False) |
100 | 100 |
|
101 |
+parser.add_option('--expunge', |
|
102 |
+ action="store", |
|
103 |
+ type="string", |
|
104 |
+ dest="expunge", |
|
105 |
+ help="Expunge mailbox specify (ALL to expunge all mailboxes)", |
|
106 |
+ default=None) |
|
107 |
+ |
|
101 | 108 |
(options, args) = parser.parse_args() |
102 | 109 |
|
103 | 110 |
if options.verbose: |
... | ... |
@@ -147,12 +154,40 @@ if options.user: |
147 | 154 |
logging.critical("IMAP Auth error : %s" % e) |
148 | 155 |
sys.exit(3) |
149 | 156 |
|
157 |
+def expunge(server,mailbox): |
|
158 |
+ logging.info('Expunge %s mailbox' % mailbox) |
|
159 |
+ try: |
|
160 |
+ (st,c) = server.select(mailbox) |
|
161 |
+ if st!='OK': |
|
162 |
+ logging.error('Error selecting %s mailbox : %s' % (mailbox,st)) |
|
163 |
+ return |
|
164 |
+ (st,ex) = server.expunge() |
|
165 |
+ if st=='OK': |
|
166 |
+ if len(ex)==1 and ex[0] is None: |
|
167 |
+ logging.info('Mailbox %s expunged, no mail removed' % mailbox) |
|
168 |
+ else: |
|
169 |
+ logging.info('Mailbox %s expunged : %s mail(s) removed' % (mailbox,len(ex))) |
|
170 |
+ else: |
|
171 |
+ logging.info('Error expunging %s mailbox, return "%s"' % (mailbox,st)) |
|
172 |
+ except Exception as e: |
|
173 |
+ logging.error('Error expunging %s mailbox : %s' % (mailbox,e)) |
|
174 |
+ |
|
175 |
+ |
|
150 | 176 |
try: |
151 | 177 |
if options.list: |
152 | 178 |
logging.info('List mailbox') |
153 | 179 |
(status,l) = server.list() |
154 | 180 |
for d in l: |
155 |
- logging.info(' "%s"' % d) |
|
181 |
+ logging.info(' "%s"' % d.split('"')[3]) |
|
182 |
+ elif options.expunge: |
|
183 |
+ if options.expunge=='ALL': |
|
184 |
+ logging.debug("Listing mailboxes") |
|
185 |
+ (status,l) = server.list() |
|
186 |
+ for d in l: |
|
187 |
+ dirname=d.split('"')[3] |
|
188 |
+ expunge(server,dirname) |
|
189 |
+ else: |
|
190 |
+ expunge(server,options.expunge) |
|
156 | 191 |
else: |
157 | 192 |
logging.debug("Select mailbox") |
158 | 193 |
ret = server.select(options.mailbox) |
159 | 194 |