0

Gmailアカウントに接続し、送信された添付ファイルをダウンロードする素晴らしいプログラムをJavaで作成しました。添付ファイルがダウンロードされると、開封済みとしてマークされ、二度とダウンロードされません。このプログラムは、1 つの添付ファイルが 2 回ダウンロードされることがないように、各プログラムが固有の添付ファイルをダウンロードする複数のインスタンスで実行する必要があります。問題は、添付ファイルが適切なサイズである場合、別のインスタンスが接続し、既読としてマークされる前に添付ファイルのダウンロードを開始すると、1 つのプログラムがまだダウンロード中であるということです。

さまざまなフラグを確認して設定し、フォルダーが開いているかどうかを確認しようとしましたが、何も機能していないようです。解決策はありますか?

更新: 迅速な回答ありがとうございます。悲しいことに、IMAP は他の理由によりオプションではありません。

4

6 に答える 6

4

代わりにIMAPの使用を検討してください。これは、クライアントとサーバーの相互作用のために設計されています。

于 2009-07-29T16:26:38.460 に答える
2

RFC1939 (Post Office Protocol - バージョン 3)から:

POP3 は、サーバー上でメールの広範な操作操作を提供することを意図していません。通常、メールはダウンロードされてから削除されます。より高度な (そして複雑な) プロトコルである IMAP4 については、RFC1730で説明されています。

于 2009-07-29T16:35:34.320 に答える
2

POP3 は複数同時アクセス用に作られていないと思います。

自問自答してください: 同じメールボックスにアクセスする複数のプロセスが本当に必要ですか?

その場合、これらのプロセスが相互に通信する方法を見つける必要があります。共通のデータベースまたはサーバー プロセスを使用してアクションを調整します。

IMAPには他にもオプションがありますが、単一のメールを「ロック」して処理中としてマークできるかどうかはわかりません。

于 2009-07-29T16:37:25.143 に答える
1

他の人が述べたように、POP3 はこの種のシナリオを意図したものではありません。

絶対に POP3 を使用する必要がある場合は、すべての電子メールを中間サーバーにダウンロードしてメッセージを分類し、他の各クライアントで利用できるようにすることをお勧めします。

電子メールの処理を分散しようとしているだけのようです。その場合は、各クライアントを中間サーバーに接続して、次に利用可能なメッセージを取得するだけです。

あなたの制約が何であるかはわかりませんが、電子メール以外の方法で添付ファイルを受け取ることを検討したいかもしれません. 人々がファイルをアップロードしている場合、アプリケーションの次に利用可能なインスタンスに各ファイルを自動的に送信して処理する Web フォームを設定できます。

于 2009-07-29T16:51:38.197 に答える
0

ダウンロードを開始する前にメールに既読のマークを付けてから、ダウンロードを開始できます。

于 2009-07-29T16:55:21.480 に答える
0

POP3 接続を維持する必要がある場合は、以前にダウンロードしたメッセージ ID のローカル データベースを保持できます。その後、新しいインスタンスは、再度ダウンロードする前にそれをチェックできます。ただし、IMAP はダウンロード前に既読/未読フラグを設定できるため、IMAP を使用するのが最善の解決策です。

于 2009-07-29T16:37:37.967 に答える