При получении почты IMAP\POP3 выдаёт не все письма

Что не понимаю:

Хочу получать письма с яндекс\маил почт сразу после того как они пришли, но выдать может не с первой. Почему так?

Пример:

Идёт подключение к яндекс почте. Запрашиваем самое первое письмо из входящих. Выдаёт точно не первое(может 20, а может и 25). Причём вне зависимости сколько писем пришло выдавать будет точно такое, какое было до этого. На mail почте было так: запрашиваю письмо, а его нет только через минут 20-40 я могу его получить. И так было на mail всегда.

Что я думал:

Прочитал в документации(если это так можно назвать) у яндекса, что если на аккаунт не привязан номер, то он будет баниться на определённое время. Но бан это на подключение влияет, если он есть значит подключится(войти) в аккаунт будет невозможно.

Библиотеки:

Сначала использовал OpenPOP3, но потом перешёл на MailKit, т.к. думал, что это проблема из-за POP3.

Код получения писем:

public async Task<List<Controls.mailcodeControl.entry>> GetMailCode(Mail mail, string email)
    {
        if (mail.client != null && (mail.client.IsConnected && mail.client.IsAuthenticated))
        {
            List<Controls.mailcodeControl.entry> entrys = new List<Controls.mailcodeControl.entry>();
            var list_mail = (await mail.client.GetFolderAsync(mail.client.Inbox.FullName));
            var access = await list_mail.OpenAsync(MailKit.FolderAccess.ReadOnly);
            var count = await list_mail.SearchAsync(MailKit.Search.SearchQuery.All);
            for (int x = 0; x < count.Count; x++)
            {
                if (entrys.Count == 10) return entrys;
                var list = await Task.Run( async delegate { return await list_mail.GetMessageAsync(count[x]);});
                var headers = list.Headers;
                DateTime dataSent = list.Date.LocalDateTime;
                DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
                DateTime ds = new DateTime(dataSent.Year, dataSent.Month, dataSent.Day);

                if (dt != ds && entrys.Count >= 1) return entrys;
                if (headers["To"] != email) continue;
                string data = null;
                if (list.Subject == "Steam Account Verification")
                {
                    data = Helpers.GetBetween(list.Body.ToString(), "\r\n\t\t\t\t\t\t\t<span style=\"font-size: 24px; color: #66c0f4; font-family: Arial, Helvetica, sans-serif; font-weight: bold;\">", "</span>\r\n\t\t\t\t\t\t\t</br>");
                }
                if (list.Subject == "Your Steam account: Email address change request" || list.Subject == "Ваш аккаунт Steam: запрос на изменение адреса эл. почты")
                {
                    data = Helpers.GetBetween(list.Body.ToString(), "\r\n\t\t\t\t\t\t\t<span style=\"font-size: 24px; color: #66c0f4; font-family: Arial, Helvetica, sans-serif; font-weight: bold;\">", "</span>\r\n\t\t\t\t\t\t");
                }
                if (list.Subject == "Recent changes to your Steam account" || list.Subject == "Недавние изменения вашего аккаунта Steam")
                {
                    data = "https://help.steampowered.com/" + Helpers.GetBetween(list.Body.ToString(), "<a style=\"color: #8f98a0;\" href=\"https://help.steampowered.com/", "\">");
                }
                if (list.Subject == "Disable Steam Guard Confirmation" || list.Subject == "Подтвердите отключение Steam Guard")
                {
                    data = "https://store.steampowered.com/account/steamguarddisableverification?stoken=" + Helpers.GetBetween(list.Body.ToString(), "https://store.steampowered.com/account/steamguarddisableverification?stoken=", "\" style=\"");
                }
                if (list.Subject == "Adding a phone number to your Steam account" || list.Subject == "Привязка номера телефона к аккаунту Steam")
                {
                    data = "https://store.steampowered.com/phone/ConfirmEmailForAdd?stoken=" + Helpers.GetBetween(list.Body.ToString(), "https://store.steampowered.com/account/steamguarddisableverification?stoken=", "\" style=\"");
                }
                if (list.Subject == "Your Steam account: Access from new web or mobile device")
                {
                    data = Helpers.GetBetween(list.Body.ToString(), "<span style=\"font-size: 24px; color: #66c0f4; font-family: Arial, Helvetica, sans-serif; font-weight: bold;\">", "</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>");
                }
                if(data != null)
                {
                    var mailCode = new Controls.mailcodeControl.entry()
                    {
                        Code = data,
                        Header = list.Subject,
                        dt = dataSent
                    };
                    entrys.Add(mailCode);
                }
            }
            return entrys;
        }
        else MessageBox.Show("Неудалось подключится");
        return null;
    }

Первое прочитаное письмо это первое письмо, которое приходит при сканировании Первое прочитаное письмо это первое письмо, которое приходит при сканировании


Ответы (0 шт):