Only selected flags are uploaded again in the message replacement method
authorPlamen Dimitrov <plamen.dimitrov@intra2net.com>
Tue, 3 Jul 2012 13:53:10 +0000 (15:53 +0200)
committerPlamen Dimitrov <plamen.dimitrov@intra2net.com>
Tue, 3 Jul 2012 13:53:10 +0000 (15:53 +0200)
src/mail_iterator.py

index cb4ee73..b2cf424 100644 (file)
@@ -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') + ".")