Не найдено новых сообщений, полученных после установления соединения
Сценарий заключается в том, что служба Windows подключается к учетной записи POP3 outlook.com или gmail.com с использованием OpenPOP. Он находит существующие электронные письма, если они есть (т.е. client.getMessageCount()
возвращает значение больше нуля).
Служба поддерживает соединение открытым и проверяет наличие новых сообщений.
Проблема в том, что если я отправлю письмо на эту учетную запись после подключения службы, то getMessageCount()
всегда возвращает ноль до тех пор, пока сервис автоматически не перезапустит pop-соединение.
Я надеюсь, что у кого-то была такая же проблема.
Я не могу решить эту проблему путем более частого всплывающего подключения / переподключения, поскольку некоторые поставщики (например, outlook.com) имеют ограничения по времени между подключениями.
1 ответ
В спецификации POP3 упоминается, что почтовый ящик заблокирован, пока клиент его открывает. Поэтому сообщения не могут появляться.
Подумайте об этом сценарии: большинство серверов назначают новым сообщениям низкий номер сообщения. Вы только что получили все номера сообщений:
1 - Foo message
2 - Bar message
Теперь вы хотите удалить сообщение Foo, но сервер обновляет maildrop так:
1 - Baz message
2 - Foo message
3 - Bar message
Вы отправляете команду DELE 1, и теперь отметили Baz, а не сообщение Foo, которое нужно удалить. Протокол POP3 был разработан, когда Интернет был редким ресурсом, и вы не всегда были подключены. Если вы хотите получать живые обновления для maildrop, вам следует использовать гораздо более новый протокол IMAP.
Если вы продолжаете использовать POP3, вам придется отключиться и подключиться снова, чтобы иметь обновления. Обратите внимание, что большинство серверов не позволяют клиентам продолжать быстрое подключение / отключение, они просто отклонят вашу аутентификацию, если вы подключаетесь слишком часто.
Также обратите внимание, что Gmail имеет странную реализацию POP3. См. Какие функции нестандартного поведения демонстрирует Gmail, когда он программно используется в качестве сервера POP3?