0

Peter HuberのPOP3クライアントを使用して、Gmailに接続し、メッセージをダウンロードしています。

アクセスされている受信トレイは、コードアクセスにのみ使用されるトランザクション受信トレイです。つまり、注文ファイルが添付されたメッセージが届き、コードがそれを処理してからメッセージを削除します。ただし、コードの1つの規定はDEBUGフラグでした。これを設定すると、コードがメッセージを削除できなくなり、後でデバッグフラグなしでプログラムを再度実行して、メッセージを再処理できます。だから、私のコードには

If Not Arguments.Debug Then pop.DeleteEmail(eid)

これは正常に機能します。問題は、メッセージを削除しなくても、プログラムを2回実行しても、Gmailにログインして受信トレイを確認しても、メッセージが再取得されないことです。プログラムにメッセージを再度表示させる唯一の方法は、メッセージを同じ受信トレイに転送することです。しかし、Peterのコードでは、セッション間で見られたメッセージを追跡している場所はどこにも見当たりません。

これはGmailの終わりに行われることですか?同じクライアントにもう一度メッセージを配信することを拒否しますか?もしそうなら、メッセージのリストを取得するときに、受信トレイ内のすべてのメッセージが常にクライアントに表示されるように、Gmailアカウントを変更する方法はありますか?Gmailの設定画面に何も表示されません。

更新: codeprojectページのこのコメントに従って、サーバーにRSETコマンドを送信するメソッドを追加しようとしました。次に、メッセージを取得した後、切断する前に新しいメソッドを呼び出しReset()ますが、それでも同じ問題が発生します。

4

1 に答える 1

0

わかりました...codeprojectプロジェクトのコメントのページを読んだ後、「一種の」答えを見つけました。

このコメントによると、Gmailのサーバーを扱っている場合、RSETコマンドは実際には何もしません。

「答え」は、ユーザー名の前に文字列「recent:」を付けることです。したがって、[ myaccount@gmail.com ]でログインする代わりに、[ recent:myaccount@gmail.com ]でログインします。むしろハックっぽい、...しかしそれは機能します。

于 2012-05-10T20:29:35.287 に答える