Python IMAP搜索部​​分主题

时间:2012-11-15 18:26:05

标签: python imap

我试图获取所有主题以" New Order"开头的电子邮件。但我似乎无法弄明白。目前我可以使用类似的设置搜索完全匹配...

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

然而,这不会检索任何不完全匹配的邮件。我将如何进行部分匹配?

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

由于

4 个答案:

答案 0 :(得分:16)

根据IMAP RFC SEARCH应该将所有匹配作为子字符串匹配:

  

在所有使用字符串的搜索键中,消息与键匹配if         字符串是字段的子字符串。匹配是         不区分大小写的。

因此,搜索

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

应匹配主题中任何位置New Order出现的所有邮件。如果不是,您应该通知Google他们的服务器没有正确实施IMAP。在此期间,您可以尝试使用

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

此外,根据Google's IMAP extension documentation,您可以使用X-GM-RAW密钥和gmail搜索字符串,如

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

答案 1 :(得分:4)

这对我有用:

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

答案 2 :(得分:0)

这对我有用:

result, data = m.search(None, 'X-GM-RAW', 'subject: New Order')

答案 3 :(得分:-2)

这对我有用:

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

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

希望它适合你。