imaplib
is intentionally a thin wrapper around the IMAP protocol, I assume to allow for a greater degree of user flexibility and a greater ability to adapt to changes in the IMAP specification. As a result, it doesn't really offer any structure for your search queries and requires you to be familiar with the IMAP specification.
As you'll see in section "6.4.4. SEARCH Command", there are many things you can specify for search criterion. Note that you have to SELECT
a mailbox (IMAP's name for a folder) before you can search for anything. (Searching multiple folders simultaneously requires multiple IMAP connections, as I understand it.) IMAP4.list
will help you figure out what the mailbox identifiers are.
Also useful in formulating the strings you pass to imaplib
is "9. Formal Syntax" from the RFC linked to above.
The r'(\HasNoChildren) "/"'
is a mailbox flag on the root mailbox, /
. See "7.2.6. FLAGS Response".
Good luck!