Python IMAP搜索部分subj

2024-05-18 11:15:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把所有主题以“新订单”开头的邮件都取出来,但我好像想不通。目前,我可以搜索一个与这样的设置完全匹配。。。

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

但是,这不会检索任何不完全匹配的消息。我该怎么做部分匹配呢?

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

谢谢


Tags: 订单服务器none消息主题searchuiddata
3条回答

这对我有效:

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

这对我有效:

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

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

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\""')

相关问题 更多 >