Headers encoding corrected and cache version validation added
[imap-fix-internaldate] / mail_iterator.py
index 0a4b5df..e4da7d4 100644 (file)
@@ -51,11 +51,11 @@ class MailIterator:
         """Iterates through all mailboxes, returns (uidval,name)."""
         for mailbox in self.mailboxes:
             logging.debug("Checking mailbox %s.", mailbox)
-            mailbox = MAILBOX_RESP.match(mailbox.decode("utf-8")).groups()
+            mailbox = MAILBOX_RESP.match(mailbox.decode('iso-8859-1')).groups()
             result, data = self.mail_con.status(mailbox[2], '(UIDVALIDITY)')
             if(result!="OK"):
                 raise UserWarning("Could not retrieve mailbox uidvalidity.")
-            uidval = UIDVAL_RESP.match(data[0].decode("utf-8")).groups()
+            uidval = UIDVAL_RESP.match(data[0].decode('iso-8859-1')).groups()
             logging.debug("Extracted mailbox info is %s %s.", data[0], uidval)
             self.mail_con.select(mailbox[2])
             yield (mailbox[2], uidval[1])
@@ -81,7 +81,7 @@ class MailIterator:
         result, data = self.mail_con.uid('fetch', mid, '(BODY.PEEK[HEADER.FIELDS (RECEIVED)])')
         if(result!="OK"):
             raise UserWarning("Could not fetch the received header of message" + mid + ".")
-        return data
+        return data[0][1].decode('iso-8859-1')
 
     def update_message(self, mid, mailbox, internal_date):
         """Replaces a message with one with correct internal date."""
@@ -94,7 +94,7 @@ class MailIterator:
 
         fetched_flags = self.mail_con.uid('fetch', mid, '(FLAGS)')[1][0]
         parsed_flags = imaplib.ParseFlags(fetched_flags)
-        flags_str = " ".join(flag.decode("utf-8") for flag in parsed_flags)
+        flags_str = " ".join(flag.decode('iso-8859-1') for flag in parsed_flags)
         result, data = self.mail_con.append(mailbox, flags_str,
                                             internal_date_str, data[0][1])
         logging.debug("Adding corrected copy of the message reponse: %s %s", result, data)