我想获取所有主题以"New Order"开头的电子邮件,但似乎无法弄清楚。目前,我可以使用以下设置搜索完全匹配...
result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')
然而,这不会检索到任何不完全匹配的消息。我该如何进行部分匹配?
如果有关系的话,我是在和 Gmail 的 IMAP 服务器交流。
谢谢。
SEARCH
命令应将所有匹配项都作为子字符串进行匹配:
在所有使用字符串的搜索键中,如果字段是该字符串的子字符串,则消息与该键匹配。 匹配不区分大小写。
因此,搜索操作
M.uid('search', None, 'HEADER Subject "New Order"')
应匹配所有主题中任意位置含有New Order
的消息。如果不是这样,你应该通知 Google 他们的服务器没有正常实现 IMAP。同时,你可以尝试使用SUBJECT
关键字,如下所示:
M.uid('search', None, 'SUBJECT "New Order"')
根据Google的IMAP扩展文档,您可以使用X-GM-RAW
键和Gmail搜索字符串来进行搜索。
M.uid('search', None, r'X-GM-RAW "subject:\"New Order\""')
mail.uid('search', None, r'(X-GM-RAW "subject:\"New Order\"")')
M.uid('search',None, '(SUBJECT "New Order")')
搜索格式为(EmailAttribute "您的搜索字符串")
希望对您有用。
result, data = m.search(None, 'X-GM-RAW', 'subject: New Order')
M
是什么? - John