예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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
예제 #4
0
파일: pop.py 프로젝트: HackLinux/chandler-1
    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