The IMAP SEARCH command is the wrong approach for this, unfortunately, because a search for an empty string will match everything (not just messages with an empty From header or an empty From address).
The best way to do this would be something more like this:
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;
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…