При получении почты 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;
}
Первое прочитаное письмо это первое письмо, которое приходит при сканировании
