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
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)
def getsock(): if TYPE == 'network': return imaplib.IMAP4(HOST, PORT) elif TYPE == 'stream': return imaplib.IMAP4_stream(DAEMONBIN)