Exemple #1
0
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')
Exemple #3
0
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))
Exemple #4
0
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)))
Exemple #5
0
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)"))