Using IMAPClient Search for keyword in subject?

670 views Asked by At

Below returns unseen emails and their respective subject lines. How do I only return unseen email subject lines that match a keyword?

Any help would be appreciated, many thanks in advance....

import email
from imapclient import IMAPClient

HOST = 'somthin.com'
USERNAME = 'email'
PASSWORD = 'pwd'

with IMAPClient(HOST) as server:
server.login(USERNAME, PASSWORD)
server.select_folder("INBOX", readonly=True)

messages = server.search("UNSEEN")
for uid, message_data in server.fetch(messages, "RFC822").items():
    email_message = email.message_from_bytes(message_data[b"RFC822"])
    print(uid, email_message.get("Subject"))
1

There are 1 answers

0
Dataman X On

I used imap_tools to solve my problem...

from imap_tools import MailBox, AND, OR, NOT
from pprint import pprint    

# get list of email subjects from INBOX folder
with MailBox('xyz.com').login('email', 'pwd', initial_folder='INBOX') as mailbox:
    subjects = [msg.subject for msg in mailbox.fetch(AND(subject='keyword'))]
    pprint(subjects)