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

如何在Python中使用通配符查找Outlook中主题含指定字符的邮件?

解决方案

你可以根据自己的匹配复杂度选以下任意一种方式实现需求:

方案1:简单模糊匹配(无需额外工具)

如果只需要替换5th为任意内容,匹配后缀为 1-33 for November的主题,直接用Python字符串的endswith方法即可:

for message in messages:
    # 注意win32com调用Outlook属性首字母大写,是Subject不是subject
    if message.Subject.endswith(" 1-33 for November"):
        print("Found")

如果只要主题包含1-33 for November不管前后内容,直接用in判断:

if "1-33 for November" in message.Subject:

方案2:复杂通配符规则(用正则)

如果对替换5th的内容有格式要求,比如只能是数字加后缀(1st、2nd、3rd、4th这类),可以用你已经导入的re库实现:

import re

# 正则规则:数字 + 两位字母后缀 + 空格 + 固定后缀
pattern = r'\d+[a-zA-Z]{2} 1-33 for November'
for message in messages:
    if re.search(pattern, message.Subject):
        print("Found")

方案3:大批量邮件高效筛选(用Outlook内置过滤)

如果收件箱邮件数量很多,遍历所有邮件效率低,可以直接用Outlook的Restrict方法做前置筛选,其中%是Outlook过滤语法的通配符:

# 过滤规则:主题包含 1-33 for November
filter_rule = "@SQL=\"http://schemas.microsoft.com/mapi/proptag/0x0037001f\" LIKE '%1-33 for November%'"
# 直接获取符合规则的邮件,无需遍历所有邮件
filtered_msgs = messages.Restrict(filter_rule)

for msg in filtered_msgs:
    print("Found")

注意:代码中调用Outlook邮件的主题属性时,属性名是首字母大写的Subject,全小写的subject可能会取不到值报错。

内容的提问来源于stack exchange,提问作者LewisThelemon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:03