C# MailKit SearchQuery.FromContains(";)

C# MailKit SearchQuery.FromContains(";),c#,mailkit,C#,Mailkit,我正在为自己编写一个垃圾邮件删除工具。我希望此筛选器包括“发件人”字段为空的电子邮件。不幸的是,当我试图通过搜索像这样的空字符串来输入这样的定义时 SearchQuery.FromContains("") 。。。我得到一个错误,说明字符串不能为空 有人对此有什么想法吗?如何根据空的“收件人”或“发件人”字段过滤电子邮件?不幸的是,IMAP搜索命令是错误的方法,因为搜索空字符串将匹配所有内容(不仅仅是带有空发件人标题或空发件人地址的邮件) 最好的方法是这样做: var mes

我正在为自己编写一个垃圾邮件删除工具。我希望此筛选器包括“发件人”字段为空的电子邮件。不幸的是,当我试图通过搜索像这样的空字符串来输入这样的定义时

SearchQuery.FromContains("")
。。。我得到一个错误,说明字符串不能为空


有人对此有什么想法吗?如何根据空的“收件人”或“发件人”字段过滤电子邮件?

不幸的是,IMAP搜索命令是错误的方法,因为搜索空字符串将匹配所有内容(不仅仅是带有空发件人标题或空发件人地址的邮件)

最好的方法是这样做:

var messages = folder.Fetch (0, -1, MessageSummaryItems.Envelope | MessageSummaryItems.UniqueId);
var spamUids = new UniqueIdSet ();
foreach (var message in messages) {
    if (message.Envelope?.From.Count == 0) {
        // This means there are 0 addresses in the From header
        spamUids.Add (message.UniqueId);
        continue;
    }

    if (message.Envelope?.To.Count == 0) {
        // This means there are 0 addresses in the To header
        spamUids.Add (message.UniqueId);
        continue;
    }
}

很有效,非常感谢!如果Jeffrey提供的答案对您有效,您可能需要单击旁边的灰色复选标记。(你也可以在投票时给它一个向上的投票。)欢迎来到StackOverflow!