我正在尝试获取所有主题以“新订单”开头的电子邮件,但我似乎无法弄清楚。目前我可以搜索与这样的设置完全匹配的...
result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')
但是,这不会检索任何不完全匹配的消息。我将如何进行部分匹配?
如果重要的话,我正在与 gmail 的 imap 服务器通话。
谢谢
最佳答案
根据IMAP RFC SEARCH
应该将其所有匹配作为子字符串匹配:
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.
因此,搜索
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\""')
关于Python IMAP 搜索部分主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403790/