c# - MailKit SearchQuery.FromContains("")
问题描述
我正在为自己编写一个垃圾邮件删除工具。我希望此过滤器包含“发件人”字段为空的电子邮件。不幸的是,当我尝试通过搜索这样的空字符串来输入这样的定义时......
SearchQuery.FromContains("")
...我收到一条错误消息,指出字符串不能为空。
有人对此有任何想法吗?如何根据空的“收件人”或“发件人”字段过滤电子邮件?
解决方案
不幸的是,IMAP SEARCH 命令是错误的方法,因为搜索空字符串将匹配所有内容(不仅仅是带有空 From 标头或空 From 地址的消息)。
最好的方法是这样的:
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;
}
}
推荐阅读
- swiftui - SwiftUI 中带括号的奇怪渲染行为
- python - 2D numpy 数组中常见元素的成对计数
- docker-compose - service 必须是映射,而不是 NoneType
- c++ - C ++在另一个进程之后执行一个子进程迭代
- javascript - 如何将多个画布放入单个 HTML
- reactjs - ReactJS 中的自定义内容
- android - WearOS 手表记录步数并将其作为消息通过蓝牙发送到手机。用于步骤更新的手机应用程序的文本视图未立即同步
- html - 如何使文本区域具有降价属性(HTML)
- python - 如何将 tkinter 画布图像绑定到函数?
- javascript - 在下拉 javascript 中选择值时出现问题?