如何配置Msgraph的notificationQueryOptions过滤批量邮件,仅接收非批量邮件通知
正确配置方案
你原配置失效的核心原因是Microsoft Graph无法直接识别原始邮件头作为过滤字段,BCL值存储在指定的单值扩展属性中,需要按以下规则调整配置:
配置逻辑说明
- 批量投诉级别(BCL)在Graph API中对应单值扩展属性
PidTagBulkComplaintLevel,属性ID为Integer 0x4037,无需解析完整X-Microsoft-Antispam邮件头即可直接读取值 - 需要先在资源路径中声明要加载的扩展属性,再在过滤规则中用集合运算符匹配属性值
可用配置示例
{ "changeType": "created", "resource": "me/mailFolders('Inbox')/messages?$expand=singleValueExtendedProperties($filter=id eq 'Integer 0x4037')", "clientState": "secret", "notificationUrl": "https://...", "notificationQueryOptions": "$filter=singleValueExtendedProperties/any(p: p/id eq 'Integer 0x4037' and p/value eq 0)", "expirationDateTime": "2021-09-12T22:42:09Z" }
过滤规则解释
resource字段中的$expand参数用于预加载BCL对应的扩展属性,确保消息触发时Graph可以读取到该属性值用于规则校验notificationQueryOptions中的any运算符用于遍历消息的单值扩展属性集合,匹配属性ID为Integer 0x4037且值为0的消息,仅符合条件的消息才会触发通知
内容的提问来源于stack exchange,提问作者MassimoB
相关产品推荐
相关产品推荐

