如何使用C# Graph API按主题、是否有附件过滤邮件
按主题和附件状态过滤Graph API收件箱邮件的C#实现
方法1:使用$filter同时过滤主题和附件状态
Graph SDK提供了Filter()方法,可直接传入OData过滤表达式,同时实现主题匹配、附件状态筛选的逻辑。整合后的代码如下:
// 定义过滤规则:主题包含指定关键词,且带有附件 var filterRule = "contains(subject, '目标关键词') and hasAttachment eq true"; var filteredMessages = await graphClient.Me .MailFolders["Inbox"] .Messages .Request() .Select("sender,subject,hasAttachment") // 可选:若需返回附件状态字段可添加 .Filter(filterRule) .Top(5) .GetAsync();
contains(subject, '目标关键词'):匹配主题包含指定内容的邮件hasAttachment eq true:筛选带有附件的邮件,若需找无附件邮件,改为hasAttachment eq false- 多条件可用
and/or连接,灵活组合逻辑需求
方法2:使用$search精准搜主题 + $filter筛附件
如果需要更偏向全文搜索的主题匹配,可结合Search()和Filter()方法:
var filteredMessages = await graphClient.Me .MailFolders["Inbox"] .Messages .Request() .Select("sender,subject,hasAttachment") .Search("subject:'目标关键词'") // 精准搜索主题包含指定词的邮件 .Filter("hasAttachment eq true") // 同时筛选带附件的邮件 .Top(5) .GetAsync();
注意事项
- 使用
$search时,部分Exchange Online租户需提前开启邮箱搜索功能 - 若关键词包含单引号,需用两个单引号转义(例如
contains(subject, 'Lisa''s project'))
内容的提问来源于stack exchange,提问作者Satya
相关产品推荐
相关产品推荐

