Imap search criteria - imaplib (python)

2019-07-13 02:18发布

问题:

I'm using imaplib for python and I came across a strange behavior. I don't really know if this is an imap ou imaplib problem/feature, so I'm hoping anyone can give me some lights.

During my project I do several searchs on my gmail boxes. Imagine that I do an imap search with the following criteria:

((since "date A") (before "date B"))

Now, if I have emails since "date A", imap(lib) does the expected thing: returns the emails since "date A" and before "data B". Lovely. However, if I have NO emails since "date A", imap(lib) simply ignores that and returns all emails before "date B" even they are not since "data A"!

Is this the expected behavior for imap? I don't really think so, it makes no sense at all.

I really need the ability to search for any given period and I'm hopping not having to pool the box before every search just to know the last email's date.

Any idea? Am I missing something here?

回答1:

M.search(None, '(since "12-Jul-2010" before "12-Jul-2011")')

  SINCE 
     Messages whose internal date (disregarding time and timezone)
     is within or later than the specified date.

  BEFORE 
     Messages whose internal date (disregarding time and timezone)
     is earlier than the specified date.

  make sure that `SINCE < BEFORE`