如何使用DASL筛选器排除特定域名并筛选单收件人邮件?
DASL筛选器需求实现方案
排除指定域名收件人邮件的规则修正
你之前编写的查询语句失效的核心原因是:urn:schemas:httpmail:displayto 存储的是Outlook界面展示的收件人显示文本,内容可能是收件人姓名、昵称,不一定包含完整的@域名格式邮箱地址,用该属性做域名匹配会出现大量漏判。
要准确匹配收件人邮箱域名,需使用存储实际SMTP收件人地址列表的属性,对应排除规则写法为:
NOT "urn:schemas:httpmail:to" LIKE '%@test.com%'
如果需要同时排除抄送、密送归属该域名的邮件,可额外补充对
urn:schemas:httpmail:cc、urn:schemas:httpmail:bcc属性的匹配判断。
筛选仅1位收件人的一对一邮件
DASL没有提供直接的收件人计数字段,可通过Outlook存储地址的格式特征实现该筛选:
- 多收件人地址在属性中用分号分隔,仅单个收件人时地址字符串不含分号
- 需排除存在抄送、密送收件人的情况,避免漏判群发邮件
对应筛选语句片段为:
"urn:schemas:httpmail:to" NOT LIKE '%;%' AND "urn:schemas:httpmail:cc" = '' AND "urn:schemas:httpmail:bcc" = ''
合并后的完整可用查询语句
将上述规则整合后,可直接使用的完整DASL查询语句如下:
NOT "urn:schemas:httpmail:to" LIKE '%@test.com%' AND "urn:schemas:httpmail:to" NOT LIKE '%;%' AND "urn:schemas:httpmail:cc" = '' AND "urn:schemas:httpmail:bcc" = ''
补充:如果需要兼容显示名恰好包含
@test.com字符串的极端误判场景,可以搭配MAPI命名空间下的PR_SMTP_ADDRESS属性做更精准的匹配,常规日常使用场景下上述语句已经可以覆盖绝大多数情况。
内容的提问来源于stack exchange,提问作者nicope13
相关产品推荐
相关产品推荐

