如何在imap_tools中使用表达式匹配@test.com域名的邮件?
解决imap_tools匹配指定域名邮件的问题
你之前用\w+@test.com作为from_参数值无法生效,是因为imap_tools的筛选条件遵循IMAP协议的搜索语法,不是Python正则表达式,IMAP搜索不支持\w+这类正则符号。
方法一:用IMAP通配符直接筛选
IMAP搜索支持*作为通配符(匹配任意长度的任意字符),直接用*@test.com就能匹配所有@test.com域名的邮件,代码如下:
messages = mb.fetch(criteria=AND(seen=False, from_="*@test.com"), mark_seen=True, bulk=True)
方法二:Python层面二次过滤(更灵活)
如果需要更精确的匹配规则(比如验证邮箱前缀格式),可以先拉取所有未读邮件,再用Python正则在本地过滤:
import re from imap_tools import AND # 先获取所有未读邮件 messages = mb.fetch(criteria=AND(seen=False), mark_seen=True, bulk=True) # 过滤出@test.com结尾的邮件 target_messages = [msg for msg in messages if re.match(r'.+@test\.com$', msg.from_)]
内容的提问来源于stack exchange,提问作者Jorhanc
相关产品推荐
相关产品推荐

