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 |