From: Plamen Dimitrov Date: Tue, 3 Jul 2012 13:53:10 +0000 (+0200) Subject: Only selected flags are uploaded again in the message replacement method X-Git-Url: http://developer.intra2net.com/git/?p=imap-fix-internaldate;a=commitdiff_plain;h=44662883f63a5f0f96de6fb83f2dcfbbec893428 Only selected flags are uploaded again in the message replacement method --- diff --git a/src/mail_iterator.py b/src/mail_iterator.py index cb4ee73..b2cf424 100644 --- a/src/mail_iterator.py +++ b/src/mail_iterator.py @@ -123,17 +123,27 @@ class MailIterator: def update_message(self, mid, mailbox, internal_date): """Replaces a message with one with correct internal date.""" - internal_date_seconds = time.mktime(internal_date.timetuple()) - internal_date_str = imaplib.Time2Internaldate(internal_date_seconds) + internal_date_sec = time.mktime(internal_date.timetuple()) try: result, data = self.mail_con.uid('fetch', mid, '(RFC822)') #logging.debug("Entire e-mail is: %s", data[0][1]) + # retrieve and select flags to upload fetched_flags = self.mail_con.uid('fetch', mid, '(FLAGS)')[1][0] parsed_flags = imaplib.ParseFlags(fetched_flags) + try: + selected_flags = () + for flag in parsed_flags: + if(flag != b'\\Recent'): + selected_flags += (flag,) + logging.debug("Selected flags %s from parsed flags %s.", selected_flags, parsed_flags) + except Exception as ex: + logging.error(ex) flags_str = " ".join(flag.decode('iso-8859-1') for flag in parsed_flags) + + # uplad message copy and delete old one result, data = self.mail_con.append(mailbox, flags_str, - internal_date_str, data[0][1]) + internal_date_sec, data[0][1]) logging.debug("Adding corrected copy of the message reponse: %s %s", result, data) except: raise UserWarning("Could not replace the e-mail " + mid.decode('iso-8859-1') + ".")