def getLastEmails(conf, inputs, outputs): conn = IMAP(conf["mm_mail"]["server"]) conn.login(conf["mm_mail"]["user"], conf["mm_mail"]["password"]) status, data = conn.select("INBOX") results = [] for num in range(1, int(data[0]) + 1): typ, data = conn.fetch(num, '(RFC822)') raw_email = data[0][1] raw_email_string = raw_email.decode('utf-8') email_message = email.message_from_string(raw_email_string) email_from = email_message['from'] for part in email_message.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue fileName = part.get_filename() if bool(fileName): filePath = os.path.join(conf["main"]["tmpPath"], fileName) if not os.path.isfile(filePath): fp = open(filePath, 'wb') fp.write(part.get_payload(decode=True)) fp.close() results += [{"mail": email_from, "path": filePath}] conn.store(num, '+FLAGS', '\\Deleted') conn.expunge() conn.close() conn.logout() outputs["Result"]["value"] = json.dumps(results) return zoo.SERVICE_SUCCEEDED
def mark_unseen(mail: Email, server_conn: imaplib.IMAP4): server_conn.store(mail.id, '-FLAGS', '\Seen')
def mark_messages_deleted(server: imaplib.IMAP4, msgs_to_delete: List[int], only_tag: bool): message_ids = ",".join(map(str, msgs_to_delete)) action = TAG_NAME if only_tag else r"(\Deleted)" check_response(server.store(message_ids, "+FLAGS", action))
def archive_mail(imap: IMAP4, num) -> None: ret_code, ret_msg = imap.store(num, '+FLAGS', '\\Deleted') if ret_code != 'OK': raise Exception('Could not archive the email: ' + str((ret_code, ret_msg)))
def mark_messages_deleted(server: imaplib.IMAP4, msgs_to_delete: List[int]): message_ids = ",".join(map(str, msgs_to_delete)) check_response(server.store(message_ids, "+FLAGS", r"(\Deleted)"))