Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   C# MailKit - определить дату получения сообщения (http://forum.oszone.net/showthread.php?t=343185)

Макс1 06-12-2019 02:19 2899238

C# MailKit - определить дату получения сообщения
 
При получении сообщения с помощью MailKit по протоколу IMAP или POP3 использую свойство message.Date.UtcDateTime Если правильно понимаю, это дата отправки. Надо обрабатывать только новые сообщения. Проблема в том, что иногда сообщения с более ранним значением даты приходят позже. Если обрабатывать только сообщения с датой, более новой, чем последнее полученное, сообщения могут теряться, если их дата окажется более ранней.
В каждом сообщении есть текст, который начинается с Received: from и заканчивается датой в формате Fri, 06 Dec 2019 01:31:12 +0300 Первое вхождение такого текста позволяет найти дату получения сообщения. Эта дата идет обычно по возрастанию от старых сообщений к новым. Проблема в том, что на сервере mail.ru заметил, что время сообщений изменилось на несколько часов между двумя сообщениями, полученными в течение короткого промежутка времени, и осталось тем же.
Есть ли надежный и желательно простой способ сортировать сообщения по дате получения. Абсолютное значение даты не самый важный вопрос. Важно, чтобы у более новых сообщений дата всегда была более новой.

Кроме того, при получении почты по POP3 с gmail.com получает только около 700 старых сообщений и не получает новые. С IMAP и с другими серверами такой проблемы нет. Понимаю, что лучше использовать IMAP, но есть вопрос в связи с возможным использованием серверов, где есть только POP3.

Busla 06-12-2019 11:40 2899267

Цитата:

Цитата Макс1
В каждом сообщении есть текст, который начинается с Received: from и заканчивается датой в формате Fri, 06 Dec 2019 01:31:12 +0300 Первое вхождение такого текста позволяет найти дату получения сообщения. »

нет

и далее вы сами подтверждаете, что в реальной жизни это не так :-)

POP3 - это транспортный протокол. Время получения, это когда вы своим MailKit'ом забрали сообщение.

А IMAP - протокол синхронизации с серверным п/я - там в самом протоколе есть флаги и атрибуты с датой получения и состоянием синхронизации


Время: 22:59.

Время: 22:59.
© OSzone.net 2001-