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') + ".")