0
votes

I have this code to use gmail imap to check unread messages, and it works good to read messages in the inbox, but I also want to read messages in the spam folder. I am not sure how I would go about this. I also only want to continue to only read Unseen messages like the script does now. Any help or any possible solution is appreciated. This is what I have so far (this will only check inbox, not spam, I need to check unread in both):

import imaplib
import os

def check_emails(email):
    output = []
    try:
        M = imaplib.IMAP4_SSL('imap.gmail.com', 993)
        M.login(email.split(":")[0], email.split(":")[1])
        M.select()
        M.select("Inbox")
        status, data = M.search(None, "UNSEEN")
        for num in data[0].split():
            status, data = M.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT)])')
            email_msg = data[0][1]
            output.append(email_msg)

        return output
    except Exception as e:
        return e.args



emails = [line.rstrip('\n') for line in open(os.path.abspath("emails.txt"), 'r')]

for email in emails:
    print("Checking email " + email)
    print(check_emails(email))
1
Have you tried with [Google Mail]/Spam in the Select field?Jescanellas
@Jescanellas that does not work, it gives this error: ("SELECT command error: BAD [b'Could not parse command']",)user13241697

1 Answers

0
votes

Figured it out. I have been trying to use [Google Mail]/ in the search, but it is actually [Gmail]/Spam.