2009-07-29 3 views
0

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

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

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

ответ

1

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

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

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

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

+0

Спасибо, я мог бы избавиться от использования почты вообще, хотя загрузка на другой сервер определенно будет излишним. – 2009-07-29 17:11:57

4

Рассмотрите возможность использования IMAP - он предназначен для взаимодействия клиент-сервер.

+0

Да, это ответ точно, ИМХО. Google поддерживает его. – djangofan

2

RFC1939 С (Post Office Protocol - Version 3):

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

2

Я не думаю, что POP3 составлен для несколько одновременных доступа.

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

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

IMAP У есть больше опций, но я не уверен, что вы можете «заблокировать» одно письмо, чтобы пометить его как обрабатываемое.

+0

Он мог установить флаги на электронном письме с IMAP, хотя я согласен с тем, что это не на 100% надежный подход. – jsight

+0

Установил ли IMAP флаги сразу или в конце транзакции? – Stroboskop

+0

Он, скорее всего, просто увольняет клиентов с помощью cron или подобных, не зная друг о друге. –

0

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

0

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

+1

поп не поддерживает это – 2009-07-29 17:10:37

+0

А, я забыл эту часть. – aperkins

Смежные вопросы