imaplib仅匹配完整主题不支持部分匹配,如何查找指定前缀邮件?
解决Gmail IMAP主题前缀搜索问题
问题原因
你用带双引号的SUBJECT "Green Law_Settlement_122"是在做精确短语匹配——只有邮件主题里完整包含这个短语的才会被命中。而你的目标邮件主题是Green Law_Settlement_12242022.xlsx,主题里并没有Green Law_Settlement_122这个精确短语,所以搜不到。之前用完整字符串能搜到,是因为那个完整短语正好和主题核心部分完全匹配。
解决方案
要匹配所有主题以Green Law_Settlement_开头的邮件,需要用Gmail IMAP支持的通配符搜索,注意别把通配符*放在双引号里(双引号内的*会被当成普通字符)。直接用以下代码:
# 搜索主题以"Green Law_Settlement_"开头的邮件 result, data = mail.search(None, 'SUBJECT Green Law_Settlement_*')
如果需要更严谨的匹配(避免主题中间出现该短语的邮件被误命中),也可以用括号把搜索项括起来:
result, data = mail.search(None, 'SUBJECT (Green Law_Settlement_*)')
这种写法会匹配所有主题以Green Law_Settlement_开头的邮件,不管后面跟着日期、文件后缀还是其他内容。
内容的提问来源于stack exchange,提问作者Ezer K
相关产品推荐
相关产品推荐

