1

POP3 メール クライアントを作成しています。サーバーにメッセージを残したいのですが、再接続するたびにすべてのメッセージを再ダウンロードする必要はありません。

今日すべてのメッセージをダウンロードし、明日再接続する場合、プロトコルは過去 24 時間または特定の連続 ID からのメッセージのみをダウンロードする機能をサポートしていますか? または、すべてのメッセージを再度ダウンロードする必要がありますか?

Unique IDentification Listing 機能は認識していますが、http://www.faqs.org/rfcs/rfc1939.html によると元の仕様ではサポートされていません。ほとんどのメール サーバーはこの機能をサポートしていますか?

はい、私のクライアントは IMAP もサポートしていますが、この質問は POP サーバー専用です。

4

4 に答える 4

3

IMAPの使用を検討しましたか?

于 2009-03-27T22:02:01.133 に答える
1

やりました。

すべてのヘッダーを読み直す必要がありますが、ダウンロードするメッセージを決定できます。

ただし、誰にでもできるタイムスタンプを提供するヘッダーには何も覚えていません。すでに見たものを記録しておくことなしに、あなたの解決策が可能だとは思えません。

(私の場合、私は気にしませんでした.ヘッダーに特定の識別機能を持つメッセージを探していました.それらのメッセージはダウンロードされ、処理され、削除され、他のすべてはそのままでした.)

また、プロトコルを誤解しているのではないかと思います。メッセージをダウンロードしたからといって、それがサーバーから削除されるわけではありません。メッセージを強制終了する明示的なコマンドを指定した場合にのみ、サーバーから削除されます。(そして、メッセージに非常に多くの添付ファイルが含まれている場合、適切にログオフする前にシステムがタイムアウトし、そのために kill コマンドが破棄されて、壁を突き破ることになります!) (これは設計上の見落としでした。元のロジックは100k を超える 1 つのファイル、または合計が 100k 未満のできるだけ多くのファイルを添付する. 別のタスクでは、それぞれが約 100 バイトの数千のファイルをバーフィードして生成しました. !)

したがって、メール クライアントを作成する場合は、ローカルにまだ持っていないものをダウンロードするだけです。それがサーバー上に残ることになっている場合は、問題ありません。kill コマンドを実行しないでください。

于 2009-03-28T04:12:27.387 に答える
0

過去に処理された方法は、クライアントごとです。たとえば、Scribeを使用して、あるマシンで削除せずに電子メールを取得してから別のマシンに移動すると、以前に見たことがあるにもかかわらず、すべての電子メールが再度ダウンロードされます。内部的には、クライアントには、以前に電子メールがダウンロードされたかどうかを格納するテーブルがあると思います。

私が知っているプロトコルには、それを可能にするものは何もありません。

于 2009-03-27T22:00:29.420 に答える
0

並べ替え。個々のメッセージをダウンロードできますが、リモート サーバーに状態を保存することはできません。

http://www.faqs.org/rfcs/rfc1939.htmlで RETR コマンドを参照してください。

于 2009-03-28T03:46:28.557 に答える