MailKit — IMAPClient() .search() не читает ВСЕ электронные письма C#

#c# #.net-core #imap #mailkit

#c# #.net-ядро #imap #mailkit

Вопрос:

Я использую клиент MailKit librairy, чтобы использовать их протокол IMAP для чтения моих писем и поиска в нем определенного письма. Это хорошо работает для последней почты (менее полутора месяцев). Но когда я пытаюсь найти электронное письмо, содержащее «myWordToSearch» за долгое время (6 месяцев или что-то в этом роде), оно говорит мне, что его не существует, потому что оно не проникает так глубоко в письма. Есть ли способ получить / прочитать ВСЕ электронные письма, чтобы отфильтровать их (например, панель поиска в gmail или что-то в этом роде)?

Вот мой код :

                using (var client = new ImapClient())
               {
                        using (var cancel = new CancellationTokenSource())
                        {

                            client.Connect("imap."   provider , 993, true, cancel.Token);
                            client.Authenticate(myMail, myPassword, cancel.Token);
                            var inbox = client.Inbox;
                            inbox.Open(FolderAccess.ReadOnly, cancel.Token);

                            var mail = (SearchQuery.SubjectContains(myWordToSearch)); 
                            foreach (var uid in inbox.Search(mail, cancel.Token))
                            {
                                  var message = inbox.GetMessage(uid, cancel.Token);
                            }
                         }
                }
 

Комментарии:

1. Откуда их читать? Ваш поставщик электронной почты возвращает эти электронные письма через IMAP в первую очередь? Или у них есть 6-месячное ограничение на поиск, чтобы уменьшить их рабочую нагрузку?

2. Одно из моих писем @gmail.com (imap.gmail.com ). Могут ли они на самом деле ограничить свою рабочую нагрузку IMAP, ограничив возраст почты? Я считаю, что электронные письма, которые находятся на второй странице и , не отображаются. Но когда вы используете IMAP на своем телефоне для получения своих писем, вы получаете их все или?

3. Вы можете загрузить все метаданные и выполнить поиск самостоятельно, но это гораздо более дорогостоящая операция.

4. Вы открываете client.Inbox , поэтому, конечно, он не выполняет поиск по всему. Он просматривает входящие. Вместо этого попробуйте открыть папку «Вся почта».