0

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"))
Dataman X
  • 11
  • 1

1 Answers1

1

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)
Vladimir
  • 6,162
  • 2
  • 32
  • 36
Dataman X
  • 11
  • 1