Exemplo n.º 1
0
    def find_and_delete_mail_text(self, text):
        mb = imaplib.IMAP4_stream(self.command)

        start = time.time()
        found = False
        mails = []

        while not found and time.time() - start < self.mailtimeout:
            status, count = mb.select()
            count = int(count[0])

            for msgnum in range(count, max(count - 5, 0), -1):
                status, message = mb.fetch(str(msgnum), '(RFC822)')
                if PYT3:
                    message = email.message_from_bytes(message[0][1])
                else:
                    message = email.message_from_string(message[0][1])
                for part in message.walk():
                    if PYT3:
                        data = part.get_payload()
                    else:
                        data = part.get_payload(decode=True)
                    if data and text in data:
                        found = True
                        mb.store(str(msgnum), '+FLAGS', '\\Deleted')
                        mails.append(message)
                    if found:
                        break
                if found:
                    break

            if not found:
                time.sleep(0.5)

        mb.expunge()
        mb.close()
        mb.logout()

        return mails
Exemplo n.º 2
0
 def _create_IMAP4(self, **kwargs):
     # Create the IMAP instance in a separate method to make unit tests easier
     if self.stream:
         return imaplib.IMAP4_stream(self.host)
     ImapClass = self.ssl and imaplib.IMAP4_SSL or imaplib.IMAP4
     return ImapClass(self.host, self.port, **kwargs)
Exemplo n.º 3
0
def getsock():
    if TYPE == 'network':
        return imaplib.IMAP4(HOST, PORT)
    elif TYPE == 'stream':
        return imaplib.IMAP4_stream(DAEMONBIN)