How to search for a specific email using python imaplib.IMAP4.search ()

import imaplib,time T=time.time() M=imaplib.IMAP4_SSL("imap.gmail.com") M.login(user,psw) M.select() typ, data = M.search(None, 'UNSEEN SINCE T') for num in string.split(data[0]): try : typ, data=M.fetch(num,'(RFC822)') msg=email.message_from_string(data[0][1]) print msg["From"] print msg["Subject"] print msg["Date"] except Exception,e: print "hello world" M.close() M.logout() 

ERROR:

 Traceback (most recent call last): File "mail.py", line 37, in <module> typ, data = M.search(None, 'UNSEEN SINCE T') File "/usr/lib/python2.7/imaplib.py", line 627, in search typ, dat = self._simple_command(name, *criteria) File "/usr/lib/python2.7/imaplib.py", line 1070, in _simple_command return self._command_complete(name, self._command(name, *args)) File "/usr/lib/python2.7/imaplib.py", line 905, in _command_complete raise self.error('%s command error: %s %s' % (name, typ, data)) imaplib.error: SEARCH command error: BAD ['Parse command error'] 

I want to search email from a specific time. Here is my code. But it works with an error. Can you give me some tips on how to solve it .thanks a lot!

+4
source share
2 answers
 import imaplib mail = imaplib.IMAP4_SSL('imap.gmail.com') mail.login(' test@gmail.com ', 'test') mail.list() # Out: list of "folders" aka labels in gmail. mail.select("inbox") # connect to inbox. result, data = mail.search(None, '(FROM "anjali sinha" SUBJECT "test")' ) ids = data[0] # data is a list. id_list = ids.split() # ids is a space separated string latest_email_id = id_list[-1] # get the latest result, data = mail.fetch(latest_email_id, "(RFC822)") # fetch the email body (RFC822) for the given ID raw_email = data[0][1] # here the body, which is raw text of the whole email # including headers and alternate payloads 

print raw_email

this ended up working for me specyfing labels with conditions

+11
source

UPDATE: OP imported imaplib, but it still generates an error message that was not placed in the question.

-

This will not work because you did not import imaplib.

Try

 import smtplib, time, imaplib 

instead

 import smtplib, time 
0
source

All Articles