Beispiel #1
0
 def handleuids(self, uids):
     self.uidlist = MessageSet()
     dlist = []
     destfd = open(sys.argv[3], "at")
     for num, data in uids.items():
         uid = data['UID']
         d = self.proto.fetchSpecific(uid, uid=1, peek=1)
         d.addCallback(self.gotmessage, destfd, uid)
         dlist.append(d)
     dl = defer.DeferredList(dlist)
     dl.addCallback(lambda x, fd: fd.close(), destfd)
     return dl
Beispiel #2
0
    def addMessage(self, content, flags=(), date=None):
        """Add the given message to this mailbox."""
        msg = self.storage.makeMessage(self.getUIDNext(True), content.read())
        msg.date = date
        self.storage.addMessage(msg)
        self.store(MessageSet(long(msg.id), long(msg.id)), flags, 1, True)
        msg.recent = True
        msg.store()
        self.recent_count += 1
        self.unseen_count += 1

        for listener in self.listeners:
            listener.newMessages(self.getMessageCount(), self.getRecentCount())
        d = defer.Deferred()
        reactor.callLater(0, d.callback, self.storage.keys().index(msg.id))
        return d
Beispiel #3
0
    def search(self, query, uid):
        """Search for messages that meet the given query criteria.

        @type query: C{list}
        @param query: The search criteria

        @rtype: C{list}
        @return: A list of message sequence numbers or message UIDs which
        match the search criteria.
        """
        if self.getMessageCount() == 0:
            return []
        all_msgs = MessageSet(long(self.storage.keys()[0]),
                              long(self.storage.keys()[-1]))
        matches = []
        for id, msg in self._messagesIter(all_msgs, uid):
            for q in query:
                if msg.matches(q):
                    matches.append(id)
                    break
        return matches
Beispiel #4
0
 def printqueryresult(self, result):
     print "The following %d messages matched:" % len(result)
     m = MessageSet()
     for item in result:
         m.add(item)
     print str(m)