2012-03-27 11 views
1

IMAP、Java、Pythonなどにアクセスするためのライブラリがいくつかあることがわかりました。しかし、私がしたいことは非常に具体的であり、ほとんどのimapの例とは逆です。 IMAPサーバー、ログイン、および特定のフォルダ名 IMAP "Over Quota" specific scripting

  • ハァハァすべてそのフォルダ内のメッセージを考える

    • 簡単に部品(つまり、簡単にまたはより効率的かどうか、ハァハァフォルダ?)

    非定型部品:

    • すべてのNが
    • 0123を削除した後、EXPUNGEを実行します。
    • リトライとバッチサイズのロジックをいくつか含めることで、セッションごとに100個のメッセージを削除したり削除したりするなど、忙しいサーバーにも役立ちます。
    • すべてのヘッダーをダウンロードしないでください!

    最後の点は問題です。すべての電子メールクライアント私は2万の電子メールヘッダーをダウンロードすることに挑戦しました - 私は見る必要はありません。私はただの連番ID、1、2、3を与えてくれたPOP3のスクリプトで

    ...

    しかし、私が見てきたすべてのIMAPの例では、ヘッダから得たいくつかのフィールドを使用して表示されます。 IMAPメッセージを削除すると、おそらくは、あなたが推測できないIDであるが必要ですか? (そしてクエリを実行することによってのみ得ることができます)

    ヘッダーを取得する必要があれば、できるだけコンパクトにすることができますか?それとも、一度に100回だけするのですか?

    また、電子メールクライアントのUIでフォルダ全体を削除しようとしましたが、これはうまくいかないようです。私はそれが最初にすべてのヘッダーをごみ箱に移動しようとしていると思うし、それで失敗するので、決して壊れた部分には行きません。だから、フォルダを削除するほうが実際にそのコンテンツを削除するよりも効率的です。

    感謝しています。私は通常JavaやPythonで動作しますが、私は柔軟です。私はこれがプロトコルの問題であり、ライブラリの問題ではないと思います。

  • 答えて

    2

    あなたはログイン後に、これらのコマンドを実行すると、SELECTすることができます(かなり非定型であるGmailなど)非定型サーバーを使用していない[フォルダ]と仮定すると:

    A001 STORE 1:N +FLAGS (\Deleted) 
    A002 EXPUNGE 
    A003 STORE 1:N +FLAGS (\Deleted) 
    A004 EXPUNGE 
    

    をというように、あなたが交換する場所あなたのバッチサイズでN。これはごみ箱フォルダを使用しません(IMAPサーバーにGmailのような特別なロジックがない限り、gmailの場合はIMAPアクセス設定を調整します)。

    あなたがこれを行うことができるようになります。しかし、しばらく時間がかかることがあり

    A001 STORE 1:* +FLAGS (\Deleted) 
    A002 EXPUNGE 
    

    実際には、あなたは、プロトコルを自分でログインして話すようにsocatのようなツールを使用することができます。

    socat READLINE: OPENSSL:[server]:993,noverify,crlf 
    a LOGIN [user] "[password]" 
    b SELECT [folder] 
    

    そしてストアと上からのコマンドを抹消。

    0

    IMAP specificationには、メールボックス全体を破壊する可能性のあるDELETE commandがあります。

    +0

    ありがとう@sarnold良い情報が、私はそれを修正するかどうかは分かりません。例えば、 "junk_folder"に100,000のメッセージがあるとします。私はDELETEコマンドを使用します。私はこれが多くの実装で問題になると思われます。私が見たことから、IMAPサーバーはゴミ箱に100,000のコピーコマンドを開始し、元の100,000メッセージに削除済みのフラグを設定すると思いますので、今は200,000件のメッセージを持ち、しばらくの間はクォータオーバーです。すべてが終わったときに限り、それは抹消を行い、スペースを再利用し、代わりに窒息する可能性があります。思考? (もちろん実装にもよる) –

    +0

    実装が特に壊れていない限り、DELETE [フォルダ]はすべてのメッセージをゴミ箱に移動させるべきではありません。 「ごみ箱」フォルダは仕様の一部ではなく、主にクライアントによる紳士の契約です。 Googleは例外です:彼らはバックグラウンドで多くの仕事をしますが、すぐに削除する設定を変更することができます。 – Max

    +0

    @Max:追加情報をありがとう。 – sarnold