def __fetchMessage(self, msgs, curMessage): if __debug__: self.printCurrentView("fetchMessage") msg = msgs.keys()[0] messageText = msgs[msg]['RFC822'] #XXX: Need a more perforrmant way to do this messageObject = email.message_from_string(messageText) repMessage = message.messageObjectToKind(self.view, messageObject, messageText) """Set the message as incoming""" repMessage.incomingMessage(self.account) """Save IMAP Delivery info in Repository""" repMessage.deliveryExtension.folder = "INBOX" repMessage.deliveryExtension.uid = curMessage[0] repMessage.deliveryExtension.flags = curMessage[1] self.numDownloaded += 1 if self.numDownloaded == self.numToDownload: self.__setNextUID(self.lastUID + 1) self.totalDownloaded += self.numDownloaded self._commitDownloadedMail() else: m = self.pending.pop(0) d = self.proto.fetchMessage(str(m[0]), uid=True) d.addCallback(self.execInViewDeferred, self.__fetchMessage, m) d.addErrback(self.catchErrors)
def __retrieveMessage(self, msg, msgNum, uid): if __debug__: self.printCurrentView("retrieveMessage") messageText = "\n".join(msg) #XXX: Need a more perforrmant way to do this messageObject = email.message_from_string(messageText) repMessage = message.messageObjectToKind(self.view, messageObject, messageText) """Set the message as incoming""" repMessage.incomingMessage(self.account, "POP") repMessage.deliveryExtension.uid = uid #XXX: This is temporary will need a better way #XXX: Could use an item collection with an index self.account.downloadedMessageUIDS[uid] = "True" self.numDownloaded += 1 if not self.account.leaveOnServer: d = self.proto.delete(msgNum) else: d = defer.succeed(True) d.addErrback(self.catchErrors) if self.numDownloaded == self.numToDownload: self.totalDownloaded += self.numDownloaded d.addCallback(lambda _: self._commitDownloadedMail()) else: msgNum, uid = self.pending.pop(0) d.addCallback(lambda _: self.proto.retrieve(msgNum)) d.addCallback(self.execInViewDeferred, self.__retrieveMessage, msgNum, uid) return d