Получение нескольких клиентов Java pop3 для работы с GMail - PullRequest
0 голосов
/ 29 июля 2009

Я написал замечательную программу на Java, которая подключается к учетной записи Gmail и загружает отправленные ей приложения. Как только вложение было загружено, оно помечается как прочитанное и больше не загружается. Эта программа должна запускаться несколько раз, при этом каждая программа загружает уникальные вложения, чтобы одно вложение никогда не загружалось дважды. Проблема заключается в том, что в данный момент, если вложение имеет приличный размер, одна программа все еще загружает его, когда другой экземпляр подключается и также начинает загружать вложение, прежде чем оно будет помечено как прочитанное.

Я попытался проверить и установить различные флаги и проверить, открыта ли папка, кажется, ничего не работает. Любые решения?

Обновление: спасибо за быстрые ответы, к сожалению, IMAP не подходит по другим причинам.

Ответы [ 6 ]

4 голосов
/ 29 июля 2009

Попробуйте вместо этого использовать IMAP - он предназначен для взаимодействия клиент-сервер.

2 голосов
/ 29 июля 2009

Я не думаю, что POP3 создан для множественного одновременного доступа.

Задайте себе вопрос: мне действительно нужно, чтобы несколько процессов обращались к одному и тому же почтовому ящику?

Если вы это сделаете, вам нужно будет найти способ, чтобы эти процессы взаимодействовали друг с другом. Используйте общую базу данных или процесс сервера для координации действий.

IMAP имеет дополнительные параметры, но я не уверен, что вы можете "заблокировать" одно письмо, чтобы пометить его как обрабатываемое.

2 голосов
/ 29 июля 2009

С RFC1939 (Протокол почтового отделения - Версия 3):

POP3 не предназначен для обеспечения обширные манипуляции с операциями почта на сервере; обычно почта скачал и затем удалил. Более продвинутый (и сложный) протокол, IMAP4, обсуждается в RFC1730 .

1 голос
/ 29 июля 2009

Как уже упоминалось, POP3 на самом деле не предназначен для такого сценария.

Если вам абсолютно необходимо использовать POP3, я бы предложил загрузить всю электронную почту на промежуточный сервер, который сортирует сообщения и делает их доступными для каждого из других клиентов.

Похоже, вы просто пытаетесь распределить обработку писем. Если это так, вы можете просто подключить каждого клиента к промежуточному серверу для получения следующего доступного сообщения.

Я не уверен, каковы ваши ограничения, но вы можете даже подумать о получении вложений другим способом, кроме электронной почты. Если люди загружают файлы, вы можете настроить веб-форму, которая автоматически отправляет каждый файл на следующий доступный экземпляр вашего приложения для обработки.

0 голосов
/ 29 июля 2009

Вы можете пометить письмо как прочитанное перед началом загрузки, а затем начать его загрузку.

0 голосов
/ 29 июля 2009

Если вам нужно остаться с подключением POP3, вы можете сохранить локальную базу данных ранее загруженных идентификаторов сообщений. Затем новые экземпляры могут проверить это перед повторной загрузкой. Лучшее решение - просто использовать IMAP, поскольку IMAP может устанавливать флажки чтения / чтения перед загрузкой.

...