12

我正在尝试获取主题以“新订单”开头的所有电子邮件,但我似乎无法弄清楚。目前我可以搜索与这样的设置完全匹配的...

result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')

但是,这不会检索任何不完全匹配的消息。我将如何进行部分匹配?

如果重要的话,我正在与 gmail 的 imap 服务器交谈。

谢谢

4

4 回答 4

22

根据IMAP RFC 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\""')
于 2012-11-15T19:06:33.333 回答
4

这对我有用:

mail.uid('search', None, r'(X-GM-RAW "subject:\"New Order\"")')
于 2013-03-27T18:22:25.863 回答
0

这对我有用:

result, data = m.search(None, 'X-GM-RAW', 'subject: New Order')
于 2017-02-07T17:03:16.143 回答
0

这对我有用:

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

搜索格式为(EmailAttribute "your searchstring")

希望对你有效。

于 2016-06-07T15:22:03.957 回答