You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中正确使用Outlook.Items.Restrict过滤含指定词的邮件

使用pywin32筛选Outlook主题包含特定词汇的正确方式

你当前代码的问题在于用了=操作符搭配通配符,Outlook的Restrict方法不支持这种写法来匹配包含关系。要筛选主题包含特定词汇的邮件,需要改用Like操作符。

基础写法

直接使用Outlook的DAV搜索语法,用Like搭配通配符*:

criteria = "sample"
search_criteria = f"[Subject] Like '*{criteria}*'"
emails = target_folder.Items.Restrict(search_criteria)

这里的*可以匹配任意长度的字符(包括空字符),表示主题中任意位置包含sample的邮件都会被筛选出来。

进阶SQL语法写法

如果需要更精细的控制(比如区分大小写),可以使用@SQL=前缀的SQL语法筛选:

criteria = "sample"
# 默认不区分大小写
search_criteria = f"@SQL=\"urn:schemas:httpmail:subject\" LIKE '%{criteria}%'"
# 强制区分大小写
search_criteria = f"@SQL=\"urn:schemas:httpmail:subject\" LIKE '%{criteria}%' COLLATE Latin1_General_CS_AS"

这种写法使用了Exchange的SQL查询语法,urn:schemas:httpmail:subject是主题字段的标准命名空间,COLLATE子句用来指定大小写规则(CS表示区分大小写,CI表示不区分)。

内容的提问来源于stack exchange,提问作者César Baylina Delgado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:28:12