фильтровать электронную почту с вложением, используя mimekit / mailkit - PullRequest
0 голосов
/ 17 декабря 2018

есть ли способ фильтрации писем только с вложениями?Я использую этот код

using (var client = new ImapClient())
       {
         client.Connect(IMAPServer, IMAPport, IMAPSSL);
         client.AuthenticationMechanisms.Remove("XOAUTH2");
         client.Authenticate(User, Password);
         var inbox = client.Inbox;
         inbox.Open(FolderAccess.ReadOnly);
         //filter email with attachments only
           var results = inbox.Search(SearchQuery.NotSeen.And(SearchQuery.NotDeleted));
  }

1 Ответ

0 голосов
/ 17 декабря 2018

К сожалению, IMAP не предоставляет критерий поискового запроса для проверки того, есть ли в сообщении вложение, но вы можете сделать это создать поисковый запрос с другими критериями, которые вы хотите (так же, как у вас)уже сделано), а затем сделать:

var results = inbox.Search(SearchQuery.NotSeen.And(SearchQuery.NotDeleted));
var items = MessageSummaryItems.BodyStructure | MessageSummaryItems.UniqueId;
var matched = new UniqueIdSet ();

foreach (var message in inbox.Fetch (results, items)) {
    if (message.BodyParts.Any (x => x.IsAttachment))
        matched.Add (message.UniqueId);
}

// `matched` now contains a list of UIDs of the messages that have attachments
// and also fit your other search criteria
...