Python IMAP搜索部​​分主题

Kaz*_*rik 9 python imap

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

result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Geo*_*edy 17

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

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

因此,搜索

M.uid('search', None, 'HEADER Subject "New Order"')
Run Code Online (Sandbox Code Playgroud)

应匹配New Order主题中任何位置发生的所有消息.如果不是,您应该通知Google他们的服务器没有正确实施IMAP.在此期间,您可以尝试使用SUBJECT密钥

M.uid('search', None, 'SUBJECT "New Order"')
Run Code Online (Sandbox Code Playgroud)

此外,根据Google的IMAP扩展文档,您可以使用X-GM-RAW密钥和gmail搜索字符串

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

  • 我知道出了什么问题了。Google/gmail 假定所有搜索都是单词,这意味着“(HEADER主题“主题此处”)”将匹配诸如“主题此处额外单词”之类的内容,但不匹配“主题此处5”之类的内容。我仍然不确定如何使用 gmail 进行非单词搜索,或者是否可能。 (2认同)