Python IMAP search for partial subject

imap, python

Solution

According to the IMAP RFC `SEARCH` should do all of its matching as substring matches:

In all search keys that use strings, a message matches the key if the string is a substring of the field. The matching is case-insensitive.

Therefore, a search

M.uid('search', None, 'HEADER Subject "New Order"')

should match all messages where `New Order` occurs anywhere in the subject. If it is not, you should notify Google that their server does not implement IMAP properly. In the meantime you might try using the `SUBJECT` key as in

M.uid('search', None, 'SUBJECT "New Order"')

Also, according to Google's IMAP extension documentation you might be able to use the `X-GM-RAW` key and a gmail search string as in

M.uid('search', None, r'X-GM-RAW "subject:\"New Order\""')

Problem

I'm trying to fetch all emails whose subject starts with "New Order" but I can't seem to figure it out. Currently I can search for an exact match with a setup like so... ``` result, data = M.uid('search', None, '(HEADER Subject "Subject Here")') ``` However this won't retrieve any messages that aren't an exact match. How would I go about doing a partial match? If it matters I am talking to gmail's imap server(s). Thanks

Original source

Related problems